fix(quality): name the four steps of the references audit - #989
Merged
Conversation
phpmd measured execute() at cyclomatic complexity 22 against a threshold of 10 and refused it. shillinq hit the same wall on the same generated shape and was fixed in shillinq#1517; this is the equivalent, so the four apps keep one audit shape rather than drifting. The branching was never incidental. It is a five-way classification plus a write decision, and naming the parts is what lets execute() read as "read, index, audit, report": classifyRow(), auditRows(), backfill(), ownerIndex() and report(). Behaviour is unchanged, including the ORDER the cases are tested in, which matters — a row already carrying a reference is never a backfill candidate regardless of what its identity key would have matched. I did not run phpmd before pushing the first version, which is the whole reason this exists. `composer phpmd` over all of lib/ is OOM-killed on this box and reports a false pass, so it was run per file this time, and the exit code was read rather than tail's. Verified: phpmd 0 findings, PHPCS 0, Psalm 0, PHPStan 0, tests green, and humaniq's command re-run on the rig reports the same tally as before the refactor. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Quality Report — ConductionNL/stackiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue-demi | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 130/130 | |||
| npm | ✅ | ✅ 714/714 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-09-06 18:39 UTC
Download the full PDF report from the workflow artifacts.
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.
phpmd measured
execute()at cyclomatic complexity 22 against a threshold of10 and refused it. shillinq hit the same wall on the same generated shape and
was fixed in shillinq#1517; this is the equivalent, so the four apps keep one
audit shape rather than drifting apart.
The branching was never incidental. It is a five-way classification plus a
write decision, and naming the parts is what lets
execute()read as "read,index, audit, report":
ownerIndex()auditRows()classifyRow()backfill()report()Behaviour is unchanged, including the order the cases are tested in, which
matters: a row already carrying a reference is never a backfill candidate,
regardless of what its identity key would have matched.
Why this exists at all
I did not run phpmd before pushing the first version.
composer phpmdover allof
lib/is OOM-killed on this machine and reports a false pass, so it was runper file this time — and the exit code was read rather than
tail's, which hadalready masked one result earlier in this work.
humaniq's command was re-run on the rig after the refactor and reports the same
tally as before it.
🤖 Generated with Claude Code