chore(gate-115): record the SourceMapper lookup as answered - #3562
Conversation
`ExternalIntegrationRouter::loadSource()` asks the container for `OCA\OpenConnector\Db\SourceMapper`. gate-115 reports it as a cross-app lookup naming a retired namespace. The comment beside it already explained why it is not repointed; this adds the machine-readable half so the gate stops re-raising an answered question. Re-verified 2026-09-10 against integriq `development`: integriq has no `lib/Db/` directory at all. Commit ac47457f deleted SourceMapper with 14 other mapper and entity shims to finish the chain-C OpenRegister cutover, and no `OCA\Integriq\Db\SourceMapper` was ever added in its place. The only remaining mention in that repo is a docblock in SynchronizationService recording that it reimplements the legacy `SourceMapper::findOrCreateByLocation()` over object storage. So renaming the namespace swaps one missing class for another. This site at least fails visibly, because the `get()` throws into the catch below and raises `openconnector-source-missing`, which the UI shows as "Reconfigure connector". It needs a real replacement seam, not a rename. Recorded with `@stale-fleet-app-id exclude`, the shared exclusion convention gate-115 reads (.github#738). Comments only. No behaviour changes. The two register-slug findings in lib/AppHost/Scheduling/ScheduleReconciler.php are untouched: those need a probe for the slug the register actually answers to.
Quality Report — ConductionNL/openregister @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| test-l10n-parity | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 174/174 | |||
| npm | ✅ | ✅ 551/551 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ❌ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-09-10 06:34 UTC
Download the full PDF report from the workflow artifacts.
The red on this PR is not from this PR
Where the 15 came fromThey arrived today, from the gate rather than from this repo. openregister's last
CI resolves hydra-gates at Deliberately not fixed here. Repointing 8 stale |
…urcemapper-lookup
Quality Report — ConductionNL/openregister @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| test-l10n-parity | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 174/174 | |||
| npm | ✅ | ✅ 551/551 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ❌ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-09-10 10:18 UTC
Download the full PDF report from the workflow artifacts.
What
Nine lines of comment. No code changes.
ExternalIntegrationRouter::loadSource()asks the container forOCA\OpenConnector\Db\SourceMapper. Gate-115 (stale-fleet-app-id, shipped today in hydra-gates v1.17.0) reports it as a cross-app lookup naming a retired namespace. The comment beside the line already said why it is not repointed. This adds the machine-readable half, so the gate stops re-raising a question that has an answer.What was read
Re-verified 2026-09-10 against a clean
developmentclone of integriq:lib/Db/directory at all.ac47457f("delete 14 mapper + entity shim files, chain-C cutover complete") removedSourceMapper, following7df241bcwhich deleted 15 entities and 15 mappers in the OpenRegister cutover.OCA\Integriq\Db\SourceMapperwas ever added in its place. The only remaining mention in that repo is a docblock inSynchronizationServicerecording that it reimplements the legacySourceMapper::findOrCreateByLocation()over object storage.Why record rather than repoint
Renaming the namespace swaps one missing class for another, on a diff that reads to the next person as a fix already applied.
This is the least bad of the fleet's ten answered findings, because it is the only one that fails visibly: the
get()throws into the catch below, which raisesopenconnector-source-missing, and the UI shows "Reconfigure connector" rather than a generic 500. It still needs a real replacement seam rather than a rename, and the marker records that so the next reader starts from what was already checked.How it is recorded
@stale-fleet-app-id exclude <reason>, the exclusion convention the rest of the hydra-gates suite already uses, with the reason graded by the sharedexclusion_reason.is_reason_bearing(). Gate-115 learns to read it in ConductionNL/.github#738, which must merge first: CI resolves hydra-gates at@main.Excluded findings are not hidden. The gate prints them under "recorded with a reason-bearing marker" on every run.
Not in this PR
The two register-slug findings in
lib/AppHost/Scheduling/ScheduleReconciler.php(OC_REGISTER_SLUG = 'openconnector',OB_REGISTER_SLUG = 'openbuild'). Both slugs are live across the fleet depending on whether a given instance has run the rename repair, so those need a probe for the slug the register actually answers to, not a literal swap.Verification
Gate-115 on this branch:
0 cross-app lookup(s),1 finding(s) recorded with a reason-bearing @stale-fleet-app-id exclude marker, and the 2 slug findings unchanged.php -lclean.🤖 Generated with Claude Code