Skip to content

feat(dc_bridge)!: remove blessed postgres/s3/console code path - #477

Merged
Minipada merged 3 commits into
jazzyfrom
feature/472-remove-blessed-postgres-s3-console-code
Sep 7, 2026
Merged

feat(dc_bridge)!: remove blessed postgres/s3/console code path#477
Minipada merged 3 commits into
jazzyfrom
feature/472-remove-blessed-postgres-s3-console-code

Conversation

@Minipada

@Minipada Minipada commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

  • Removes the C++ param declaration, TOML templating, and validation logic for the postgres, s3 (for receives: records), and console blessed Destination types from dc_bridge (render.hpp/render.cpp/bridge_node.cpp). The blessed receives: records set shrinks to file and vector only. type: 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).
  • Rewrites render_test.cpp and its fixtures accordingly: drops the postgres/console-specific tests (postgres URI percent-encoding, incident_id column 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 new UnexpectedDestinationKind defensive guard in render_sink().
  • Fixes a real gap discovered while completing the migration: custom_config_files passthrough snippets were validated against the rendered config but never actually 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 correctly in both managed and unmanaged mode. This directly unblocked migrating deploy/robot/params/robot_params_local.yaml and tools/release/params/smoke_params.yaml, which Migrate demos, deploy params, and docs off blessed postgres/s3/console #471 deliberately left on blessed postgres for exactly this reason (documented gap, now fixed).
  • Migrates every remaining blessed postgres/console reference Migrate demos, deploy params, and docs off blessed postgres/s3/console #471 didn't cover (it was scoped to demos/deploy/docs only): all 7 tools/e2e/params/*.yaml files, dc_bringup's default dc_params.yaml and dc_raw_params.yaml. Adds a dc_bringup/config/ directory (auto-staged by dc_raw.launch.py, mirroring 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 a type: file anchor (for its dc.<tag> route) plus a passthrough recipe TOML wired into whichever script/compose file launches that scenario.
  • Updates 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

  • Full containerized colcon build --target workspace (includes colcon test) — 655 tests, 0 errors, 0 failures, 0 skipped.
  • prek run --all-files --skip build-doc — clean.
  • Repo-wide grep confirms no remaining type: postgres/type: console params outside passthrough recipe TOML content, and no remaining PostgresParams/ConsoleParams references anywhere.

Closes #472

🤖 Generated with Claude Code

https://claude.ai/code/session_01PcgXCGPQqN3fkehWdnfYE5

Minipada and others added 3 commits September 7, 2026 10:46
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>
@Minipada
Minipada merged commit 3b0ee00 into jazzy Sep 7, 2026
19 checks passed
@github-actions
github-actions Bot deleted the feature/472-remove-blessed-postgres-s3-console-code branch September 7, 2026 12:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant