Big cleanup of old processes - #178
Conversation
WalkthroughThis change narrows the application to active datamanager workflows, removes obsolete interfaces and configuration infrastructure, adds an irreversible database migration, updates dependencies and build configuration, documents active flows, and introduces a non-blocking documentation reminder workflow. ChangesManage service consolidation
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (3)
migrations/versions/a7b8c9d0e1f2_drop_config_tables.py (1)
57-70: 🗄️ Data Integrity & Integration | 🔵 TrivialTreat this as a release-level destructive migration.
CASCADEpermanently deletes the configuration data, anddowngrade()cannot restore it. Run it only after a verified backup/restore rehearsal, and ensure deployment rollback tooling will not attempt an automatic downgrade.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@migrations/versions/a7b8c9d0e1f2_drop_config_tables.py` around lines 57 - 70, Document this migration as release-level and destructive, explicitly requiring a verified backup/restore rehearsal before running it. Update deployment or rollback configuration associated with upgrade/downgrade handling so automatic downgrade attempts are disabled, while preserving the existing irreversible downgrade behavior in downgrade().docs/datamanager/add-data.md (1)
14-16: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd a language specifier to fenced code blocks (MD040). Both new docs use plain
```fences for illustrative, non-code content, which markdownlint-cli2 flags in each case.
docs/datamanager/add-data.md#L14-L16: annotate the flow-steps diagram fence, e.g.```text.docs/datamanager/assign-entities.md#L15-L17: annotate the flow-steps diagram fence, e.g.```text.docs/datamanager/assign-entities.md#L28-L30: annotate the CSV-columns fence, e.g.```text.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/datamanager/add-data.md` around lines 14 - 16, Annotate all three plain fenced blocks with a text language specifier: the flow-steps fence in docs/datamanager/add-data.md (lines 14-16), the flow-steps fence in docs/datamanager/assign-entities.md (lines 15-17), and the CSV-columns fence in docs/datamanager/assign-entities.md (lines 28-30).Source: Linters/SAST tools
application/templates/datamanager/components/check-transform-base.html (1)
42-80: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicate pagination-building logic.
The
pagination_paramsblock (42-60) andentity_pagination_paramsblock (62-80) are near-identical, differing only by the page variable name and the extraentity_search/entity_filterquery args. Consider extracting a Jinja macro (taking the endpoint, page var, has-next flag, and extraurl_forkwargs) to avoid the two copies drifting apart on future edits.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@application/templates/datamanager/components/check-transform-base.html` around lines 42 - 80, Extract the duplicated pagination construction from the pagination_params and entity_pagination_params blocks into a reusable Jinja macro. Parameterize the macro with the page value, next-page flag, endpoint, and optional query arguments so it generates equivalent items, previous/next links, and ellipses for both standard and entity pagination; replace both inline blocks with macro calls while preserving their current URL parameters.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/docs-check.yml:
- Around line 26-34: Harden the checkout and diff setup by adding
persist-credentials: false to the actions/checkout@v6 step. In the “Check
whether a substantial code change skipped docs” step, pass github.base_ref
through an env variable named BASE_REF and update the shell commands to use
$BASE_REF instead of directly interpolating the GitHub expression in run:.
---
Nitpick comments:
In `@application/templates/datamanager/components/check-transform-base.html`:
- Around line 42-80: Extract the duplicated pagination construction from the
pagination_params and entity_pagination_params blocks into a reusable Jinja
macro. Parameterize the macro with the page value, next-page flag, endpoint, and
optional query arguments so it generates equivalent items, previous/next links,
and ellipses for both standard and entity pagination; replace both inline blocks
with macro calls while preserving their current URL parameters.
In `@docs/datamanager/add-data.md`:
- Around line 14-16: Annotate all three plain fenced blocks with a text language
specifier: the flow-steps fence in docs/datamanager/add-data.md (lines 14-16),
the flow-steps fence in docs/datamanager/assign-entities.md (lines 15-17), and
the CSV-columns fence in docs/datamanager/assign-entities.md (lines 28-30).
In `@migrations/versions/a7b8c9d0e1f2_drop_config_tables.py`:
- Around line 57-70: Document this migration as release-level and destructive,
explicitly requiring a verified backup/restore rehearsal before running it.
Update deployment or rollback configuration associated with upgrade/downgrade
handling so automatic downgrade attempts are disabled, while preserving the
existing irreversible downgrade behavior in downgrade().
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: cea917ef-8d92-4091-a260-b354c6fca2dc
📒 Files selected for processing (98)
.github/workflows/docs-check.ymlMakefileREADME.mdapplication/blueprints/datamanager/config.pyapplication/blueprints/datamanager/controllers/transform.pyapplication/blueprints/datamanager/services/async_api.pyapplication/blueprints/datamanager/utils/__init__.pyapplication/blueprints/dataset/__init__.pyapplication/blueprints/dataset/forms.pyapplication/blueprints/dataset/views.pyapplication/blueprints/endpoint/__init__.pyapplication/blueprints/endpoint/views.pyapplication/blueprints/publisher/views.pyapplication/blueprints/report/views.pyapplication/blueprints/schema/__init__.pyapplication/blueprints/schema/views.pyapplication/blueprints/source/__init__.pyapplication/blueprints/source/forms.pyapplication/blueprints/source/source.htmlapplication/blueprints/source/views.pyapplication/commands.pyapplication/data_access/endpoint/endpoint_queries.pyapplication/data_access/odp_summaries/conformance.pyapplication/data_access/odp_summaries/issue.pyapplication/data_access/odp_summaries/status.pyapplication/data_access/odp_summaries/utils.pyapplication/data_access/overview/api_queries.pyapplication/data_access/overview/datasette_queries.pyapplication/data_access/overview/entity_queries.pyapplication/data_access/overview/issue_summary.pyapplication/data_access/overview/source_and_resource_queries.pyapplication/data_access/overview/utils.pyapplication/data_access/summary_queries.pyapplication/data_commands.pyapplication/db/models.pyapplication/factory.pyapplication/publish/__init__.pyapplication/publish/models.pyapplication/spec_helpers.pyapplication/templates/components/filter-group/macro.jinjaapplication/templates/components/helpers.jinjaapplication/templates/components/resource-card.htmlapplication/templates/components/rule-table-header.htmlapplication/templates/components/source-card.htmlapplication/templates/content_type/index.htmlapplication/templates/datamanager/assign-entities-check-results.htmlapplication/templates/datamanager/check-transform.htmlapplication/templates/datamanager/components/check-transform-base.htmlapplication/templates/dataset/dataset.htmlapplication/templates/dataset/editrule.htmlapplication/templates/dataset/index.htmlapplication/templates/dataset/performance.htmlapplication/templates/dataset/rules.htmlapplication/templates/dataset/sources.htmlapplication/templates/layouts/layout.htmlapplication/templates/macro/primary-nav.htmlapplication/templates/macro/resources-sources-by-month.htmlapplication/templates/overview/high-charts-scripts.htmlapplication/templates/overview/main-dataset-table.htmlapplication/templates/overview/performance.htmlapplication/templates/partials/primary-navigation.htmlapplication/templates/reporting/endpoint_details.htmlapplication/templates/reporting/odp_conformance_summary.htmlapplication/templates/reporting/odp_issue_summary.htmlapplication/templates/reporting/odp_status_summary.htmlapplication/templates/reporting/overview.htmlapplication/templates/schema/index.htmlapplication/templates/schema/schema.htmlapplication/templates/source/archive.htmlapplication/templates/source/create.htmlapplication/templates/source/edit.htmlapplication/templates/source/finish.htmlapplication/templates/source/index.htmlapplication/templates/source/search.htmlapplication/templates/source/source.htmlapplication/templates/source/summary.htmlapplication/templates/tables/org-table-on-dataset.htmlconfig/allowed-users.mddocs/README.mddocs/datamanager/add-data.mddocs/datamanager/architecture.mddocs/datamanager/assign-entities.mddocs/datamanager/github-add.mddocs/datamanager/stale-check.mdmigrations/versions/a7b8c9d0e1f2_drop_config_tables.pyrequirements/requirements.inrequirements/requirements.txtrollup.config.jssrc/javascripts/app-background-check.jssrc/javascripts/app-resource-mapping.jssrc/javascripts/application-add-source.jssrc/javascripts/components/collapsible-section.jssrc/javascripts/components/resource-check.jssrc/javascripts/components/select-datasets.jssrc/javascripts/reporting-summary.jssrc/javascripts/utilities/DOM-helpers.jssrc/javascripts/utilities/fetchWithArgs.jssrc/javascripts/utilities/timeseries-chart.js
💤 Files with no reviewable changes (79)
- application/templates/source/create.html
- docs/datamanager/stale-check.md
- application/templates/overview/main-dataset-table.html
- application/templates/source/archive.html
- application/templates/components/filter-group/macro.jinja
- application/templates/dataset/sources.html
- application/templates/tables/org-table-on-dataset.html
- application/templates/reporting/endpoint_details.html
- application/templates/components/rule-table-header.html
- application/templates/layouts/layout.html
- application/templates/dataset/index.html
- src/javascripts/app-resource-mapping.js
- application/templates/overview/performance.html
- application/data_access/overview/api_queries.py
- application/templates/content_type/index.html
- application/templates/source/search.html
- application/templates/dataset/editrule.html
- application/data_access/overview/utils.py
- application/templates/source/finish.html
- application/templates/partials/primary-navigation.html
- application/templates/macro/primary-nav.html
- application/templates/components/helpers.jinja
- src/javascripts/utilities/fetchWithArgs.js
- src/javascripts/utilities/timeseries-chart.js
- application/templates/reporting/odp_status_summary.html
- application/templates/components/resource-card.html
- src/javascripts/utilities/DOM-helpers.js
- application/templates/reporting/odp_issue_summary.html
- application/templates/schema/schema.html
- application/blueprints/dataset/forms.py
- application/blueprints/schema/views.py
- application/templates/overview/high-charts-scripts.html
- src/javascripts/app-background-check.js
- application/data_access/endpoint/endpoint_queries.py
- src/javascripts/components/select-datasets.js
- application/templates/dataset/rules.html
- application/blueprints/endpoint/views.py
- config/allowed-users.md
- application/templates/macro/resources-sources-by-month.html
- application/templates/schema/index.html
- application/blueprints/datamanager/config.py
- application/templates/components/source-card.html
- application/commands.py
- application/data_access/overview/entity_queries.py
- src/javascripts/application-add-source.js
- application/data_access/odp_summaries/utils.py
- application/templates/source/summary.html
- application/templates/source/source.html
- application/data_access/overview/datasette_queries.py
- application/templates/source/index.html
- rollup.config.js
- application/data_access/odp_summaries/status.py
- src/javascripts/components/collapsible-section.js
- application/blueprints/source/source.html
- application/templates/dataset/performance.html
- application/data_access/summary_queries.py
- application/data_access/odp_summaries/issue.py
- application/templates/reporting/overview.html
- application/blueprints/publisher/views.py
- src/javascripts/components/resource-check.js
- application/templates/dataset/dataset.html
- application/data_access/odp_summaries/conformance.py
- application/templates/reporting/odp_conformance_summary.html
- README.md
- application/publish/models.py
- src/javascripts/reporting-summary.js
- application/spec_helpers.py
- application/data_access/overview/issue_summary.py
- application/data_access/overview/source_and_resource_queries.py
- application/blueprints/source/views.py
- Makefile
- application/data_commands.py
- application/blueprints/source/forms.py
- application/blueprints/dataset/views.py
- application/blueprints/datamanager/utils/init.py
- application/templates/source/edit.html
- application/factory.py
- application/blueprints/report/views.py
- application/db/models.py
…bsolete-code-and-add-documentation-update-checks-for-the-manage-service # Conflicts: # docs/datamanager/architecture.md # docs/datamanager/github-add.md
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
application/templates/datamanager/assign-entities-check-results.html (1)
62-62: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRemove the duplicate form IDs.
Line 170 adds a second
duplicate-redirect-formandentity-selection-changedID already defined at Lines 61–62. This makesform="duplicate-redirect-form"andgetElementById(...)resolution dependent on DOM order. Remove the empty second form; the existing form already contains the submission fields.Proposed fix
- <form method="post" action="{{ url_for('assign_entities.flagged_resource_detail_post', request_id=request_id) }}" id="duplicate-redirect-form"> - <input type="hidden" name="entity_selection_changed" id="entity-selection-changed" value="false"> - </form>Also applies to: 170-178
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@application/templates/datamanager/assign-entities-check-results.html` at line 62, Remove the duplicate empty form near the later occurrence of duplicate-redirect-form and entity-selection-changed. Keep the original form and its existing submission fields, ensuring only one element uses each ID so form="duplicate-redirect-form" and getElementById(...) resolve consistently.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@application/templates/datamanager/components/check-transform-base.html`:
- Around line 444-482: Update updateEntitySelection so it does not return when
entityCheckboxes is empty; only skip logic that requires rendered checkboxes.
Continue calculating current selection and currentRedirectSelection, then update
entitySelectionChanged and entitySelectionSubmit so duplicate-checkbox changes
still mark the selection changed and set the correct CTA on empty entity pages.
In `@docs/datamanager/add-data.md`:
- Line 27: Update the flow diagram fenced block in add-data.md to use the text
language identifier, and remove the blank line inside the blockquote near the
shared transform.py note. Apply the same formatting correction at the additional
referenced occurrence, preserving the diagram and blockquote content.
---
Outside diff comments:
In `@application/templates/datamanager/assign-entities-check-results.html`:
- Line 62: Remove the duplicate empty form near the later occurrence of
duplicate-redirect-form and entity-selection-changed. Keep the original form and
its existing submission fields, ensuring only one element uses each ID so
form="duplicate-redirect-form" and getElementById(...) resolve consistently.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 57f4b3bd-7b92-42e1-8441-6ed15de264d9
📒 Files selected for processing (11)
.github/workflows/docs-check.ymlapplication/blueprints/datamanager/controllers/transform.pyapplication/db/models.pyapplication/templates/datamanager/assign-entities-check-results.htmlapplication/templates/datamanager/components/check-transform-base.htmldocs/README.mddocs/datamanager/add-data.mddocs/datamanager/architecture.mddocs/datamanager/assign-entities.mddocs/datamanager/github-add.mdmigrations/versions/a7b8c9d0e1f2_drop_config_tables.py
💤 Files with no reviewable changes (2)
- docs/datamanager/architecture.md
- application/db/models.py
🚧 Files skipped from review as they are similar to previous changes (5)
- docs/README.md
- migrations/versions/a7b8c9d0e1f2_drop_config_tables.py
- application/blueprints/datamanager/controllers/transform.py
- .github/workflows/docs-check.yml
- docs/datamanager/github-add.md
There was a problem hiding this comment.
Caution
Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
application/templates/datamanager/assign-entities-check-results.html (1)
62-62: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRemove the duplicate form IDs.
Line 170 adds a second
duplicate-redirect-formandentity-selection-changedID already defined at Lines 61–62. This makesform="duplicate-redirect-form"andgetElementById(...)resolution dependent on DOM order. Remove the empty second form; the existing form already contains the submission fields.Proposed fix
- <form method="post" action="{{ url_for('assign_entities.flagged_resource_detail_post', request_id=request_id) }}" id="duplicate-redirect-form"> - <input type="hidden" name="entity_selection_changed" id="entity-selection-changed" value="false"> - </form>Also applies to: 170-178
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@application/templates/datamanager/assign-entities-check-results.html` at line 62, Remove the duplicate empty form near the later occurrence of duplicate-redirect-form and entity-selection-changed. Keep the original form and its existing submission fields, ensuring only one element uses each ID so form="duplicate-redirect-form" and getElementById(...) resolve consistently.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@application/templates/datamanager/components/check-transform-base.html`:
- Around line 444-482: Update updateEntitySelection so it does not return when
entityCheckboxes is empty; only skip logic that requires rendered checkboxes.
Continue calculating current selection and currentRedirectSelection, then update
entitySelectionChanged and entitySelectionSubmit so duplicate-checkbox changes
still mark the selection changed and set the correct CTA on empty entity pages.
In `@docs/datamanager/add-data.md`:
- Line 27: Update the flow diagram fenced block in add-data.md to use the text
language identifier, and remove the blank line inside the blockquote near the
shared transform.py note. Apply the same formatting correction at the additional
referenced occurrence, preserving the diagram and blockquote content.
---
Outside diff comments:
In `@application/templates/datamanager/assign-entities-check-results.html`:
- Line 62: Remove the duplicate empty form near the later occurrence of
duplicate-redirect-form and entity-selection-changed. Keep the original form and
its existing submission fields, ensuring only one element uses each ID so
form="duplicate-redirect-form" and getElementById(...) resolve consistently.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 57f4b3bd-7b92-42e1-8441-6ed15de264d9
📒 Files selected for processing (11)
.github/workflows/docs-check.ymlapplication/blueprints/datamanager/controllers/transform.pyapplication/db/models.pyapplication/templates/datamanager/assign-entities-check-results.htmlapplication/templates/datamanager/components/check-transform-base.htmldocs/README.mddocs/datamanager/add-data.mddocs/datamanager/architecture.mddocs/datamanager/assign-entities.mddocs/datamanager/github-add.mdmigrations/versions/a7b8c9d0e1f2_drop_config_tables.py
💤 Files with no reviewable changes (2)
- docs/datamanager/architecture.md
- application/db/models.py
🚧 Files skipped from review as they are similar to previous changes (5)
- docs/README.md
- migrations/versions/a7b8c9d0e1f2_drop_config_tables.py
- application/blueprints/datamanager/controllers/transform.py
- .github/workflows/docs-check.yml
- docs/datamanager/github-add.md
🛑 Comments failed to post (1)
application/templates/datamanager/components/check-transform-base.html (1)
444-482: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Do not skip Dedup state when the current Entities page is empty.
The early return prevents duplicate-checkbox changes from updating
entity_selection_changedor the CTA whenever no entity rows are rendered (for example, an empty filtered page). The POST can then continue to preview without processing the changed redirects.Proposed fix
function updateEntitySelection() { - if (!entitySelectedCount || !entityCheckboxes.length) return; var count = 0; var selectableCount = 0; var selectableSelectedCount = 0; var currentSelection = []; entityCheckboxes.forEach(function(checkbox) { // ... }); - entitySelectedCount.textContent = selectableCount - ? count + ' of ' + selectableCount + ' ' + (selectableCount === 1 ? 'entity' : 'entities') + ' selected for assignment' - : 'No entities available for assignment'; + if (entitySelectedCount) { + entitySelectedCount.textContent = selectableCount + ? count + ' of ' + selectableCount + ' ' + (selectableCount === 1 ? 'entity' : 'entities') + ' selected for assignment' + : 'No entities available for assignment'; + }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.function updateEntitySelection() { var count = 0; var selectableCount = 0; var selectableSelectedCount = 0; var currentSelection = []; entityCheckboxes.forEach(function(checkbox) { var row = checkbox.closest('.govuk-table__row'); if (row && row.dataset.originalBackground === undefined) { row.dataset.originalBackground = row.style.backgroundColor || ''; } if (!checkbox.disabled) { selectableCount += 1; if (checkbox.checked) selectableSelectedCount += 1; } if (checkbox.checked && !checkbox.disabled) { count += 1; currentSelection.push(checkbox.value); if (row) row.style.backgroundColor = darkenRowColour(row.dataset.originalBackground); } else if (row && checkbox.disabled === false) { row.style.backgroundColor = row.dataset.originalBackground || ''; } }); if (entitySelectedCount) { entitySelectedCount.textContent = selectableCount ? count + ' of ' + selectableCount + ' ' + (selectableCount === 1 ? 'entity' : 'entities') + ' selected for assignment' : 'No entities available for assignment'; } if (entitySelectAllCheckbox) { entitySelectAllCheckbox.checked = selectableCount > 0 && selectableSelectedCount === selectableCount; entitySelectAllCheckbox.indeterminate = selectableSelectedCount > 0 && selectableSelectedCount < selectableCount; entitySelectAllCheckbox.disabled = selectableCount === 0; } var selectionChanged = currentSelection.sort().join('|') !== initialEntitySelection || currentRedirectSelection() !== initialRedirectSelection; if (entitySelectionChanged) { entitySelectionChanged.value = selectionChanged ? 'true' : 'false'; } if (entitySelectionSubmit) { entitySelectionSubmit.textContent = selectionChanged ? 'Process entities' : 'Continue to preview'; }🧰 Tools
🪛 HTMLHint (1.9.2)
[error] 471-471: Special characters must be escaped : [ > ].
(spec-char-escape)
[error] 472-472: Special characters must be escaped : [ > ].
(spec-char-escape)
[error] 472-472: Special characters must be escaped : [ < ].
(spec-char-escape)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@application/templates/datamanager/components/check-transform-base.html` around lines 444 - 482, Update updateEntitySelection so it does not return when entityCheckboxes is empty; only skip logic that requires rendered checkboxes. Continue calculating current selection and currentRedirectSelection, then update entitySelectionChanged and entitySelectionSubmit so duplicate-checkbox changes still mark the selection changed and set the correct CTA on empty entity pages.
What type of PR is this? (check all applicable)
Description
Tidy-up of the Manage service down to the two live operator workflows (Add data and
Assign entities), plus supporting docs and a docs-update CI check.
source,dataset,endpoint,schema,report, andpublisherblueprints were registered but unreachable from the live UI; removed them along with their
templates,
data_accessquery modules, static JS bundles, and the old cross-blueprint navigation.ServiceLock+RequestMeta, retired theflask data/flask publishCLIs andapplication/publish/, dropped the now-unusedPyGithubdependency, and added a migration that drops the 24 obsolete config tables.
docs/datamanager/add-data.md, consolidated the stale-check intogithub-add.md,and brought the Assign Entities architecture doc alongside. Added a non-blocking GitHub Action
that reminds a PR to update
docs/when it changes more than 100 lines of code.main.Related Tickets & Documents
QA Instructions, Screenshots, Recordings
Service should operate identical to before
Added/updated tests?
[optional] Are there any post deployment tasks we need to perform?
The migration drops the retired config tables (
flask db upgraderuns on deploy). This isdestructive and intentional — see
docs/README.md.Summary by CodeRabbit