Repository navigation
Release: merge development into beta - #1094
Conversation
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ❌ | ||||
| phpmd | ❌ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ❌ | ||||
| stylelint | ✅ | ||||
| composer | ❌ | ✅ 154/154 | |||
| npm | ✅ | ❌ 1/621 denied | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ |
❌ Denied npm licenses
| Package | Version | License |
|---|---|---|
| vue3-apexcharts | 1.11.1 | Custom: https://apexcharts.com/media/vue-apexcharts.png |
Quality workflow — 2026-07-30 05:31 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ❌ | ||||
| phpcs | ❌ | ||||
| phpmd | ❌ | ||||
| psalm | ❌ | ||||
| phpstan | ❌ | ||||
| phpmetrics | ❌ | ||||
| eslint | ❌ | ||||
| stylelint | ❌ | ||||
| composer | ❌ | ❌ | |||
| npm | ❌ | ❌ | |||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-30 05:33 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ❌ | ||||
| phpmd | ❌ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ❌ | ✅ 154/154 | |||
| npm | ✅ | ❌ 1/621 denied | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ |
❌ Denied npm licenses
| Package | Version | License |
|---|---|---|
| vue3-apexcharts | 1.11.1 | Custom: https://apexcharts.com/media/vue-apexcharts.png |
Quality workflow — 2026-07-30 05:35 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ❌ | ||||
| phpmd | ❌ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ❌ | ✅ 154/154 | |||
| npm | ✅ | ❌ 1/621 denied | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ |
❌ Denied npm licenses
| Package | Version | License |
|---|---|---|
| vue3-apexcharts | 1.11.1 | Custom: https://apexcharts.com/media/vue-apexcharts.png |
Quality workflow — 2026-07-30 07:50 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ❌ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ❌ 1/621 denied | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ |
❌ Denied npm licenses
| Package | Version | License |
|---|---|---|
| vue3-apexcharts | 1.11.1 | Custom: https://apexcharts.com/media/vue-apexcharts.png |
Quality workflow — 2026-07-30 08:22 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ❌ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ❌ 1/621 denied | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ |
❌ Denied npm licenses
| Package | Version | License |
|---|---|---|
| vue3-apexcharts | 1.11.1 | Custom: https://apexcharts.com/media/vue-apexcharts.png |
Quality workflow — 2026-07-30 10:08 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ❌ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ❌ 1/621 denied | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ |
❌ Denied npm licenses
| Package | Version | License |
|---|---|---|
| vue3-apexcharts | 1.11.1 | Custom: https://apexcharts.com/media/vue-apexcharts.png |
Quality workflow — 2026-07-30 19:19 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 621/621 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-30 19:25 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 621/621 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-30 19:56 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 621/621 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-30 21:43 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ❌ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ❌ | ||||
| phpmetrics | ❌ | ||||
| eslint | ❌ | ||||
| stylelint | ❌ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ❌ | ❌ | |||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-31 09:07 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 621/621 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-31 09:28 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 621/621 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-31 09:59 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 618/618 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-31 10:04 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 699/699 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-07-31 14:06 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 699/699 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-01 13:33 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-02 20:48 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-02 22:28 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-03 00:52 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-03 08:41 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-03 10:17 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 154/154 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-03 14:35 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 153/153 | |||
| npm | ✅ | ✅ 701/701 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ |
Quality workflow — 2026-08-03 16:51 UTC
Download the full PDF report from the workflow artifacts.
docs(benchmark): task 2.2 legacy baseline measured; decomposed side blocked; two legacy defects found
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-20 03:50 UTC
Download the full PDF report from the workflow artifacts.
…oposal docs(openspec): propose ori-public-serving — openconnector serves ORI 1.4 for decidesk
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-20 05:06 UTC
Download the full PDF report from the workflow artifacts.
…oken v1.8.0 shipped an ObjectServiceInterface WITHOUT patchObject() and with updateObject() still summarised as "Apply a partial update" — the wording that sent a consumer down the erasing path. The correction landed on main two days after the tag; every app has been pinned to the broken copy since. hydra-gates claims OCA\OpenRegister\Contract\ in its composer autoload, a LONGER psr-4 prefix than openregister's own OCA\OpenRegister\ -> lib/, so the gate package wins. Nine repos vendor it, so whichever app registers first defines the contract for the whole instance — measured, softwarecatalog's vendor was supplying openregister's interface, and updating openregister alone did not change the winner. Lockfile only; the ^1.0 constraint already allowed this. Resolved with --ignore-platform-reqs because this box lacks ext-soap/bcmath/intl; the diff is six lines (version, two references, content-hash) and touches no other package and no platform block.
chore(deps): take hydra-gates v1.8.1 — the contract v1.8.0 shipped broken
…s identity Two measured defects in the legacy engine, found while establishing the task-2.2 benchmark baseline. They compound: D1 sends every object of a mapped synchronization down the update path, D2 mints a fresh contract for each. D1 — a synchronization WITH a mapping could never skip. The clause read `$mapping->getUpdated() < $contract['sourceLastChecked']`, comparing a DateTime against an ATOM string. PHP does not order an object against a string, so it was false whenever the mapping had a timestamp. Measured on the 2000-dataset CKAN benchmark with identical source data: 1854 skipped unmapped, 0 skipped mapped, 6.8 s against 17.7 s. Both sides are now normalised to a Unix timestamp. The two unknowns fall in DIFFERENT directions, and that is the whole subtlety: an absent mapping timestamp is not evidence the mapping changed, so it must not block the skip (`null < 'somestring'` was true before, and that behaviour is kept); an absent `sourceLastChecked` means there is no previous check to be newer than, so the run must write. A first cut treated every unknown as "cannot prove it is older" and broke EndoflifeDateSyncTest::testRepeatedSyncIsIdempotent, taking `skipped` from 2 to 0 — re-introducing the same defect from the other side. That case is now pinned by a test. D2 — every update minted a NEW contract. persist() read `$object['uuid']` alone and then dropped `$object['id']`, on the reasoning that `id` was a legacy int. A contract payload carries no `uuid` property at all: its identity comes back from OpenRegister AS `id`, and that `id` is a uuid string. So the upsert key was always null and every save created. Measured: four DISTINCT contract objects for one (synchronizationId, originId), one per run, each carrying an IDENTICAL originHash — the source demonstrably had not changed. The dev instance holds 528,656 contract rows. Identity is now read BEFORE `id` is dropped; a numeric `id` is still refused, which is what the original comment was protecting against. Specs: synchronization-engine REQ-024 and REQ-025. Verified: 14 new tests; the D1 control confirms `new DateTime(...) < '<atom>'` is false for values 28 s apart, and the D2 control is the same test failing against the unfixed code with "Failed asserting that null matches expected '2ad6c9a4-...'". Full unit suite 2586 tests — 27 errors / 1 failure with the fix against 40 / 2 without it, and every remaining one is a pre-existing local stub artefact in a class this change does not touch (CI's PHPUnit is green on development). phpcs 0 errors and no warning delta on lib, phpstan and psalm clean, gate-16 and gate-46 clean at the origin/beta merge scope, openspec 85/85.
…-identity fix(sync): a mapped synchronization can skip again, and a contract upserts on its own identity
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-20 05:47 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-20 06:24 UTC
Download the full PDF report from the workflow artifacts.
…eady has Live verification of #1306 showed the contract fix was only half done. On the 2000-dataset CKAN benchmark the skip came back exactly as intended — 0 skipped before, 1903 of 2000 after — but a run that skipped 1903 and updated 97 STILL added exactly 97 contract rows. Growth had dropped from +2000 to +97 per run because far fewer objects took the update path, not because the update path stopped duplicating. `ensureUuid` is meant to mint an identity for a contract that HAS none. It tested `empty($object['uuid'])`, which is true for every contract ever loaded back from OpenRegister — they carry `id`, never `uuid`. So it minted a fresh uuid ON TOP of a perfectly good identity, and the save created instead of updating. Both persists at the end of synchronizeContract pass `ensureUuid: true`, so this was every single update. The identity is now read first and `ensureUuid` only fills a genuine gap. Also adds the @SPEC anchor gate-16 wants on updateFromArray, whose body changed in #1306. Verified: 2 new tests. The control is the same test against the old ordering, which fails on the minted uuid rather than the contract's own id; a second test pins that ensureUuid STILL mints when there is genuinely no identity, so the fix cannot regress into passing null and creating an unkeyed row. Unit suite 2588 tests at the unchanged pre-existing baseline of 27 errors / 1 failure, phpcs 0 errors (19 -> 18 warnings), phpstan clean, gate-16 1 -> 0 and gate-46 clean at the origin/beta merge scope, openspec 85/85.
…verrides-identity fix(sync): ensureUuid must not mint over an identity the contract already has
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-20 09:20 UTC
Download the full PDF report from the workflow artifacts.
The coverage ratchet failed #1307 on its own diff: the two statements the fix adds live in BOTH copies of the logic — the delegate in SynchronizationContractService and the local copy in SynchronizationService that runs when no delegate is wired — and only the delegate was covered. Changed files, base: 2222/4026 -> head: 2223/4028 This is not coverage bought with filler. The fallback carried exactly the same defect and is a real path; leaving it untested is how the two copies drift. Covers both directions there: `ensureUuid: true` must not mint over an `id` the contract already has, and must still mint when there is genuinely none.
I reported the contract duplication fixed twice and it was not. This is the path the engine actually takes, and I had explicitly decided NOT to touch it. When a target write is buffered, synchronizeContract() pushes the contract onto `contractWriteBuffer` and the flush writes the batch through persistBulk() — persistContract() is never called for those rows. So neither #1306 nor #1307 reached the rows this synchronization actually writes. persistBulk() carried the identical defect: it tested `empty($object['uuid'])`, true for every contract loaded back from OpenRegister (they carry `id`, never `uuid`), minted a fresh uuid and overwrote `id` with it, so the batch created a duplicate instead of updating. Measured live after #1307 deployed, twice in a row, well past the 60s opcache window: a run that skipped 1903 of 2000 and updated 97 still added exactly 97 contract rows (8237 -> 8334 -> 8431). What identified this path was the shape of the rows it added — no `uuid` property and no `version` — which rules out both createFromArray(), that always stamps a version, and an ensureUuid mint, that always stores a uuid. WHY I MISSED IT. I saw persistBulk had the same shape and left it, reasoning that ContractCommitNode refuses to commit an update without a contract uuid so the path was guarded. That guard is real, but it protects the FLOW engine. The LEGACY buffered path calls persistBulk directly, with contracts that carry no uuid. "Guarded by a caller I checked" was not the same as "guarded by every caller". Verified: 3 new tests, with the control being the same tests against the reverted method, which fail on the minted uuid rather than the contract's own id. One test pins that persistBulk still mints when there genuinely is no identity, and one that a numeric id is still refused. Unit suite 2591 tests at the unchanged pre-existing baseline of 27 errors / 1 failure, phpcs 0 errors, phpstan clean, gate-16 and gate-46 clean at the origin/beta merge scope.
…ty defect Found by sweeping every contract-writing site instead of reasoning about which ones matter — the habit that would have caught persistBulk two attempts ago. `SynchronizationService::updateContractFromArray()` dropped `id` BEFORE reading `uuid`, so it upserted on null exactly like the others. Its delegate twin was corrected in #1306; this copy was missed. It only runs when no SynchronizationContractService is wired, so it is not the live path — but it is the same latent defect, and leaving one copy behind is how the two drift apart again. The sweep now accounts for every writer: persist(), persistBulk(), updateFromArray() and persistContract() derive the upsert key from contractIdentity(); createFromArray() and createContractFromArray() mint deliberately, because they exist to create.
…back-coverage test(sync): cover the fallback persistContract() ensureUuid branch
Two user-visible defects are fixed by this bump. TWO AI-COMPANION HEXES ON EVERY PAGE. The companion singleton landed in 2.7.0. Below that the host app's own companion never stands down, so any page of this app rendered a second hex 8px from hermiq's — measured on a running instance: openconnector (2.7.1) showed ONE, openbuild (2.6.3) showed TWO, both visible at 52x60, from two separate mounts. THE DETAIL PAGE RECLOSED ITS SIDEBAR WHILE HYDRATING. CnDetailPage set sidebarSeeded and never read it, so 'open' was re-applied on every sync and each reactive change during hydration reset it to the prop default. Fixed in nextcloud-vue#711; that is the cause behind openbuild#268 and, on the evidence, #188. Lockfile only — the existing caret already allowed this. Three-line diff (version, resolved, integrity).
…identity fix(sync): persistBulk must upsert on the contract's own identity too
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-20 11:06 UTC
Download the full PDF report from the workflow artifacts.
chore(deps): take @conduction/nextcloud-vue 2.8.2 (was 2.8.0)
This is where the duplicate-per-rerun defect actually lived. Three previous
fixes corrected the writers and changed nothing measurable, because the identity
was already gone before any writer ran.
Both sites in synchronizeContract() read:
if (($synchronizationContract['uuid'] ?? null) === null) {
$synchronizationContract['uuid'] = (string)Uuid::v4();
}
A contract loaded back from OpenRegister carries `id`, never `uuid`. So that
test was true on EVERY rerun: a fresh identity minted each time, and every
downstream writer — persist(), persistContract(), persistBulk() — then faithfully
upserted on that brand-new uuid and created a row. The writers were doing exactly
what they were told.
Measured across three successive live runs on the 2000-dataset CKAN clone, each
one skipping 1903 of 2000 and updating 97, each one adding exactly 97 contracts:
8237 -> 8334 -> 8431 -> 8528. The count moved identically before and after the
writer fixes, which is what finally pointed upstream of them.
`assignContractIdentity()` now derives the write identity through
contractIdentity() — `uuid`, else a non-numeric `id` — and mints only when there
is genuinely neither, which is what these two sites were for.
The writer fixes are not wasted: they are what makes this one sufficient rather
than merely necessary. Each of the four paths now derives identity the same way,
so none can reintroduce the mint on its own.
Verified: 4 new tests covering all four directions (existing id adopted, explicit
uuid preserved, no identity still minted, numeric id replaced not adopted). Unit
suite 2597 tests at the unchanged pre-existing baseline of 27 errors / 1 failure,
phpcs 0 errors, phpstan clean, gate-16 and gate-46 clean at the origin/beta merge
scope. The live re-measurement follows the merge; the number to beat is +0.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ⏭️ | ||||
| phpcs | ⏭️ | ||||
| phpmd | ⏭️ | ||||
| psalm | ⏭️ | ||||
| phpstan | ⏭️ | ||||
| phpmetrics | ⏭️ | ||||
| eslint | ⏭️ | ||||
| stylelint | ⏭️ | ||||
| build | ⏭️ | ||||
| composer | ⏭️ | ⏭️ | |||
| npm | ⏭️ | ⏭️ | |||
| app:check-code | ⏭️ | ||||
| info.xml | ⏭️ | ||||
| REUSE | ⏭️ | ||||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-20 11:20 UTC
Download the full PDF report from the workflow artifacts.
…royed-upstream fix(sync): stop destroying the contract's identity before it is written
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-20 12:00 UTC
Download the full PDF report from the workflow artifacts.
…now stale D2 took four attempts and the first three fixed the wrong layer. Recording both the result and the misread, because the misread is the reusable part. THE RESULT. Contract delta 0 across five consecutive runs, and — the check that actually decides it — an existing contract row proven updated IN PLACE. Probe origin 86bee4b2 had accumulated 9 contracts, one per run; after the fix the count stayed at 9 and the OLDEST row moved from 02:29:34 to 11:59:34 with targetHash intact. A flat total alone is necessary but not sufficient: it reads identically whether the row was updated or nothing was written at all. The corpus now skips 2000/2000. The 97 that used to update forever were only doing so because their contract was re-created every run, so the hash comparison could never hold for them. THE MISREAD. Each of the first three fixes provably landed — verified in the container, not the checkout — and the count still went 8237 -> 8334 -> 8431 -> 8528, exactly +1 per updated object every time. I read that as "there is one more writer to find" and went looking for a fourth. It meant the cause was upstream of every writer: synchronizeContract() minted a fresh uuid before any of them ran. A fix that lands and moves nothing is evidence about the LAYER, not the site. TIMINGS ARE NOT CARRIED FORWARD. The old bar (6.8 s unmapped / 17.7 s mapped / 22.6 s decomposed) described an engine that rewrote 2000 objects a run, which it no longer does, so it cannot be the bar the decomposed flow must beat. The verification runs cannot supply the replacement either: loadavg 15.98 with nextcloud at 88.7% CPU, against 0.36 for the original baseline. Their 30-77 s is contention, not engine. All three figures need re-taking together on a quiet box, and 2.2 stays open until they are.
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-20 12:38 UTC
Download the full PDF report from the workflow artifacts.
docs(benchmark): D1 and D2 verified live; every wall-clock figure is now stale
Quality Report — ConductionNL/openconnector @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| composer | ✅ | ✅ 145/145 | |||
| npm | ✅ | ✅ 534/534 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-20 13:23 UTC
Download the full PDF report from the workflow artifacts.
Automated PR to sync development changes to beta for beta release.
Merging this PR will trigger the beta release workflow.