Fix sync PR UoEMainLibrary#7: restore 3 deleted translations, drop the local-only demo harness - #33
Merged
milanmajchrak merged 2 commits intoJul 27, 2026
Conversation
4b21906 resolved the en.json5 conflict by taking the source branch's whole file. That branch (uoe/move-keep-embargo-policies, cut 2026-06-30) predates three keys the customer already had from sync PR #6, so the cherry-pick silently deleted them: form.vocabulary.load-error item.page.filesection.checksum item.page.doi.pending All three are referenced by code shipped in this PR, and MissingTranslationHelper renders the raw key, so the UI would show "item.page.filesection.checksum" twice per bitstream on the full item record and "item.page.doi.pending" on items awaiting DOI registration. The datashare theme copy does not help: angular.json never copies src/themes/*/assets/i18n into the build and merge-i18n is a manual script, so src/assets/i18n/en.json5 is authoritative at runtime. Unit tests cannot catch this - TranslateLoaderMock returns {}, so the specs assert on the raw key and pass either way. en.json5 is taken whole from the source branch; the two-dot diff on that path is additions-only, so this restores the three keys and changes nothing else. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cherry-pick of dataquest-dev/uoe-dspace-datashare-angular 85124a0, authored 17 minutes after the last commit picked into this sync PR and so left outside the pick window. It is the only non-merge commit from the sync window that did not make it across. 2bc0bd6 faithfully carried Dockerfile.karma and demo/** over together with the dropdown fix; upstream then removed them again as local-only recording evidence. Without this commit the sync ships 13 files / 1,574,221 bytes - 98.7% of it incompressible .webm/.gif/.png - and git history is append-only, so a later deletion would not reclaim it. Dockerfile.karma also sits at the repo root with no CMD/ENTRYPOINT and an unpinned node:20-bookworm base, and demo/package.json is a second, unmanaged manifest that dependency scanners would pick up. Note: this keeps the blobs out of the customer's history only under a squash merge, as every previous sync PR was merged. Under a plain merge commit or a rebase merge, 2bc0bd6 still introduces them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Two defects found while auditing sync PR UoEMainLibrary#7 against the source branch. Both are in this repo only — the backend sync PR is content-complete.
1. The sync deletes three translations the customer already has
Not missing new work — a regression. All three keys are on
datashare-UoEMainLibrary-dspace-8_xtoday (they arrived with sync PR #6) and the sync PR removes them:form.vocabulary.load-erroritem.page.filesection.checksumitem.page.doi.pendingKey counts: base 3585 → sync PR 3596 → source 3599.
Cause.
4b21906ce9is a cherry-pick of a+3/-3reword that landed as+6/-6. The source commit sits onuoe/move-keep-embargo-policies, cut 2026-06-30, before those three keys existed; theen.json5conflict was resolved by taking that branch's file whole, and the resulting blob is byte-identical to the source one (fd7d9912…). Harmless upstream, destructive here.Impact. All three are referenced by code shipped in this sync PR, and
MissingTranslationHelperreturnsparams.key, so the raw key renders:full-file-section.component.html:27and:70→item.page.filesection.checksumshown twice per bitstream on every full item recordmetadata-uri-values.component.html:18→item.page.doi.pendingon items awaiting DOI registrationdynamic-vocabulary.component.ts:63→ error toast body when a controlled-vocabulary lookup failsThe datashare theme still carries
item.page.doi.pending, but it never reaches the browser:angular.jsoncopies onlysrc/assets,src/robots.txtand a favicon, andmerge-i18nis a manual script present in no build step, Dockerfile or CI job.Why CI is green anyway.
metadata-uri-values.component.spec.tsregistersTranslateLoaderMock, which returns{}. The specs assert on the raw key and pass regardless ofen.json5, so no test can catch this class of regression.2. The sync ships 1.5 MB of local-only demo artifacts
2bc0bd61e5faithfully carriedDockerfile.karma+demo/**across with the dropdown fix. Upstream removed them again 48 minutes later in85124a0ce7("keep local-only test Dockerfile and demo harness out of the PR") — 17 minutes after the sync PR's last picked commit, so it fell outside the window. It is the only non-merge commit from the sync window that did not make it across.13 files, 1,574,221 bytes, 98.7% incompressible
.webm/.gif/.png. Absent from both the base branch and the source branch. Git history is append-only, so this is the one defect that cannot be cleanly undone after merge.Verification
After these two commits the branch tree is byte-identical to the source branch tip:
Git trees are content-addressed, so equal SHAs mean the two trees are identical file-for-file and byte-for-byte. The two-dot diff between this branch and the source is now empty — nothing else changed.
en.json5was taken whole from the source branch; the two-dot diff on that path was additions-only, so the three keys are restored and nothing else moves.Not addressed here (worth a look before merging the sync PR)
bitstream.upload-from-path.*keys today. The sync PR introduces the whole block withenabled = trueandallowed-paths = /bigfiles, turning on server-side file reads that did not exist before. Admin-guarded in code, but it needs an ops confirmation that/bigfilesis not writable by non-administrators.dspace healthcheckCLI command is removed fromlauncher.xmlwith no alias;dspace health-reportreplaces it. Any cron or systemd unit calling the old name will start failing.usage-statistics.cfguncapstopCountriesLimit/topCitiesLimit(100 → -1), addstopDownloadsLimit = -1, and widensstartDateInterval-6 → -60— noticeably larger Solr facet responses on production traffic.🤖 Generated with Claude Code