Skip to content

fix(quality): a required additional app that will not enable must fail the job - #355

Draft
rubenvdlinde wants to merge 1 commit into
mainfrom
fix/additional-app-enable-must-be-fatal
Draft

fix(quality): a required additional app that will not enable must fail the job#355
rubenvdlinde wants to merge 1 commit into
mainfrom
fix/additional-app-enable-must-be-fatal

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

What is wrong

php occ app:enable "$name" || echo "::warning::Failed to enable $name, continuing..."
lets a run proceed without the dependency the repository under test is built on.
The absence then resurfaces as application failures, which is indistinguishable from
real debt in the log — and a warning in a red job is invisible.

Measurement

ConductionNL/hermiq, full-scope run 31490144919, six PHPUnit cells. Perfect 6/6
correlation between grep -c 'Failed to enable openregister' and the error count:

job cell enable result
93774658402 8.4 / stable33 ok Tests: 1500, Errors: 5, Failures: 1
93774658407 8.3 / stable33 ok Tests: 1500, Errors: 5, Failures: 1
93774658415 8.4 / stable32 ok Tests: 1500, Errors: 5, Failures: 1
93774658413 8.3 / stable31 FAILED Tests: 1500, Errors: 12
93774658418 8.3 / stable32 FAILED Tests: 1500, Errors: 12
93774658420 8.4 / stable31 FAILED Tests: 1500, Errors: 12

The seven extra "errors" were Interface "OCA\OpenRegister\Service\Flow\IFlowNodeLogActions" not found and Call to undefined method MockObject_ToolRegistryFacade::describeTools().
Two causes, both of which deserve a red job:

  • deterministic — OpenRegister declares min-version="32", the cell tested stable31;
  • transientcurl error 60 … self-signed certificate during composer install left
    Twig missing, so app:enable crashed on Class "Twig\Extension\AbstractExtension" not found.

Why this is a DRAFT — please sequence it

Merging this today turns 6 repos red on a cell that is currently lying rather than
failing. Measured nextcloud-test-refs against additional-apps across the fleet — these
run a stable31 cell while requiring openregister (min-version 32), so every one of
their stable31 cells is today measuring an instance without OpenRegister:

app-versions · hermiq · hrmq · petstore · planix · nextcloud-app-template

hermiq is already fixed (ConductionNL/hermiq#180 drops its stable31 cell and
declares the truthful min-version="32"). The other five need the same one-line change
before this is merged. I have left it as a draft rather than merge it and hand five agents
an unexplained red cell mid-session — the sequencing is a fleet call, not mine.

Implementation notes

Applied to all four install sites (phpunit, newman, both playwright legs).

⚠️ The failure flag goes through a file, not a variable: the loop body runs in a
subshell because it is fed by a pipeline, so a variable set inside it is invisible after
done — the same trap run-hydra-gates.sh documents at its gate-30 loop. Verified with a
three-app simulation: exit 0 when all enable, exit 1 when the first fails, exit 1 when
the last fails.

⚠️ Grep for this failure with the app name (Failed to enable openregister). The bare
Failed to enable also matches the workflow's own echoed script line, which contains
$name unexpanded — it returns 1 on a clean run and 2 on a failing one, so an off-by-one
reads as a correlation that is not there. That mis-measurement already happened once today.

…l the job

`php occ app:enable "$name" || echo "::warning::Failed to enable $name,
continuing..."` let a run proceed WITHOUT the dependency the repository under
test is built on. The absence then resurfaced as APPLICATION failures, which is
indistinguishable from real debt in the log.

Measured on ConductionNL/hermiq, full-scope run 31490144919, six PHPUnit cells,
perfect 6/6 correlation between `grep -c 'Failed to enable openregister'` and
the error count:

  93774658402 8.4/stable33 enable ok     -> Tests: 1500, Errors: 5, Failures: 1
  93774658407 8.3/stable33 enable ok     -> Tests: 1500, Errors: 5, Failures: 1
  93774658415 8.4/stable32 enable ok     -> Tests: 1500, Errors: 5, Failures: 1
  93774658413 8.3/stable31 enable FAILED -> Tests: 1500, Errors: 12
  93774658418 8.3/stable32 enable FAILED -> Tests: 1500, Errors: 12
  93774658420 8.4/stable31 enable FAILED -> Tests: 1500, Errors: 12

The seven extra "errors" were `Interface "OCA\OpenRegister\Service\Flow\
IFlowNodeLogActions" not found` and `Call to undefined method
MockObject_ToolRegistryFacade::describeTools()` — an absent app wearing the
costume of app debt. Two causes, both deserving a red job: one deterministic
(OpenRegister declares min-version="32"; the cell tested stable31) and one
transient (`curl error 60 ... self-signed certificate` during composer install
left Twig missing, so enabling crashed).

Applied to all four install sites (phpunit, newman, and both playwright legs).

⚠️ The failure flag goes through a FILE, not a variable: the loop body runs in
a subshell because it is fed by a pipeline, so a variable set inside it is
invisible after `done` — the same trap run-hydra-gates.sh documents at its
gate-30 loop. Verified with a three-app simulation: exit 0 when all enable,
exit 1 when the FIRST fails and exit 1 when the LAST fails.

⚠️ Grep for the failure with the APP NAME (`Failed to enable openregister`).
The bare `Failed to enable` also matches the workflow's own echoed script line,
which contains `$name` unexpanded — it returns 1 on a clean run and 2 on a
failing one, so an off-by-one reads as a correlation that is not there.
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