feat(dc_bridge)!: remove blessed postgres/s3/console code path - #477
Merged
Minipada merged 3 commits intoSep 7, 2026
Merged
Conversation
Deletes the C++ param declaration, TOML templating, and validation logic for the postgres/s3(records)/console blessed Destination types from dc_bridge (render.hpp/render.cpp/bridge_node.cpp): the Bridge's `receives: records` blessed set shrinks to `file` and `vector` only. `s3` stays blessed for `receives: files` (object storage served entirely by dc_uploader's own S3 client, ADR-0005 — never a Vector sink, so unaffected by this removal). render_test.cpp and its fixtures are rewritten accordingly, adding coverage for the new UnexpectedDestinationKind guard and dropping the postgres-only incident_id normalization tests (that feature was postgres-specific and has no replacement — the field was already a top-level JSON key for every kind). Fixes a real gap discovered while completing the migration: custom_config_files passthrough snippets were validated against the rendered config but never reached the Shipper in unmanaged/split-deployment mode (shipper.managed: false) — only the single rendered shipper.config_path file did. Added merge_custom_config_files() to fold every validated snippet into that same file, so passthrough now works in both managed and unmanaged mode. This unblocked migrating the two deployments (deploy/robot/params/ robot_params_local.yaml, tools/release/params/smoke_params.yaml) that #471 deliberately left on blessed postgres for exactly this reason. Also migrates every remaining blessed postgres/console reference #471 didn't cover (out of its scope): all 7 tools/e2e/params/*.yaml files, dc_bringup's default dc_params.yaml and dc_raw_params.yaml, adding a dc_bringup/config/ directory (auto-staged by dc_raw.launch.py, matching dc_bringup.launch.py's existing helper) so `ros2 launch dc_bringup dc_raw.launch.py` still needs no manual setup. Each migrated destination keeps its `type: file` anchor (for its dc.<tag> route) plus a passthrough recipe TOML wired into whichever script/compose file launches that scenario. Updates destinations.md, dc_bridge/README.md, and the doc pages with stale blessed-set references (faq.md, raw_topics.md, concepts.md, demos.md, migration.md). Verified: full containerized colcon build + colcon test (655 tests, 0 failures) and `prek run --all-files`, both clean. A repo-wide grep confirms no remaining `type: postgres`/`type: console` params outside passthrough recipe content. Closes #472 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcgXCGPQqN3fkehWdnfYE5 Signed-off-by: David Bensoussan <d.bensoussan@proton.me>
…ge path run_split.sh was not in CI, leaving merge_custom_config_files() (#472) untested end-to-end. The split scenario is the only e2e that runs with shipper.managed:false — separate Vector container reading the merged config from a shared volume — so it is the only scenario that exercises the new code path. Uses shorter outage/delay windows (30 s outage, 15 s steady state) matching the CI-sized values already used by the main e2e job. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcgXCGPQqN3fkehWdnfYE5 Signed-off-by: David Bensoussan <d.bensoussan@proton.me>
run_split.sh uses `podman compose` which delegates to the podman-compose provider. The runner doesn't have it pre-installed, same situation as the build-workspace job — fix by adding the same cache + pip install steps. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcgXCGPQqN3fkehWdnfYE5 Signed-off-by: David Bensoussan <d.bensoussan@proton.me>
github-actions
Bot
deleted the
feature/472-remove-blessed-postgres-s3-console-code
branch
September 7, 2026 12:06
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.
Summary
postgres,s3(forreceives: records), andconsoleblessed Destination types fromdc_bridge(render.hpp/render.cpp/bridge_node.cpp). The blessedreceives: recordsset shrinks tofileandvectoronly.type: s3stays blessed forreceives: files(object storage served entirely bydc_uploader's own S3 client, ADR-0005 — never a Vector sink, so unaffected by this removal).render_test.cppand its fixtures accordingly: drops the postgres/console-specific tests (postgres URI percent-encoding,incident_idcolumn normalization — that feature was postgres-specific and has no replacement, since the field was already a top-level JSON key for every kind), adds coverage for the newUnexpectedDestinationKinddefensive guard inrender_sink().custom_config_filespassthrough snippets were validated against the rendered config but never actually reached the Shipper in unmanaged/split-deployment mode (shipper.managed: false) — only the single renderedshipper.config_pathfile did. Addedmerge_custom_config_files()to fold every validated snippet into that same file, so passthrough now works correctly in both managed and unmanaged mode. This directly unblocked migratingdeploy/robot/params/robot_params_local.yamlandtools/release/params/smoke_params.yaml, which Migrate demos, deploy params, and docs off blessed postgres/s3/console #471 deliberately left on blessedpostgresfor exactly this reason (documented gap, now fixed).postgres/consolereference Migrate demos, deploy params, and docs off blessed postgres/s3/console #471 didn't cover (it was scoped to demos/deploy/docs only): all 7tools/e2e/params/*.yamlfiles,dc_bringup's defaultdc_params.yamlanddc_raw_params.yaml. Adds adc_bringup/config/directory (auto-staged bydc_raw.launch.py, mirroringdc_bringup.launch.py's existing helper) soros2 launch dc_bringup dc_raw.launch.pystill needs no manual setup. Each migrated destination keeps atype: fileanchor (for itsdc.<tag>route) plus a passthrough recipe TOML wired into whichever script/compose file launches that scenario.doc/src/dc/destinations.md,dc_bridge/README.md, and other doc pages with stale blessed-set references (faq.md,raw_topics.md,concepts.md,demos.md,migration.md).Test plan
colcon build --target workspace(includescolcon test) — 655 tests, 0 errors, 0 failures, 0 skipped.prek run --all-files --skip build-doc— clean.type: postgres/type: consoleparams outside passthrough recipe TOML content, and no remainingPostgresParams/ConsoleParamsreferences anywhere.Closes #472
🤖 Generated with Claude Code
https://claude.ai/code/session_01PcgXCGPQqN3fkehWdnfYE5