Skip to content

docs: record that an infrastructure-only commit cannot reach production - #141

Merged
kl3inIT merged 1 commit into
mainfrom
fix/record-infra-deploy-gap
Jul 29, 2026
Merged

docs: record that an infrastructure-only commit cannot reach production#141
kl3inIT merged 1 commit into
mainfrom
fix/record-infra-deploy-gap

Conversation

@kl3inIT

@kl3inIT kl3inIT commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Documentation only. Found while verifying the observability work on the server rather than stopping at a green pipeline.

What happened

ea21ceb (PR #140) changed only infrastructure/deployment/**. The deployment run for it reported success:

Deploy exact image set: success
   Resolve deployment commit: success
   Validate commit input: success
   Require a green production image set: skipped
   Configure SSH: skipped
   Deploy and verify with ephemeral registry credentials: skipped

The reason is in the log:

Skipping deployment: build run 30478004710 produced no image set.

No path filter in build-images.yml names infrastructure/deployment/**, so nothing was built for that commit.

Why it cannot self-correct

The deploy step runs on the server:

git checkout --detach "$COMMIT_SHA" &&
./infrastructure/deployment/scripts/deploy.sh "$COMMIT_SHA"

The compose file and the deploy script both come from the deployed commit. So a commit with no image set can never be deployed, and a configuration-only change cannot take effect on its own. It reaches the server only by riding along with the next application-code commit.

The part that concerns me more

A skipped deployment reports success against the commit. Someone reading the commit status sees a green deployment that did not happen.

That is the same failure class the observability increment opened on — an exporter reporting healthy while pushing to a collector that was not there. Worth fixing in the same spirit: a no-op should be visible as a no-op.

Scope

Recorded against the CI/CD increment, which owns delivery, with the consequence noted in the observability plan: the telemetry identity fix from #140 is merged but not applied, and needs re-checking on the containers after the next deployment carrying application code. Not fixed here — changing the build filters or the deploy gating belongs to that increment, not to a docs commit.

🤖 Generated with Claude Code

Found while verifying the observability work on the server. `ea21ceb` changed
only `infrastructure/deployment/**`. No path filter in `build-images.yml` names
that directory, so no image was built; "Require a green production image set"
found no release and the deployment skipped every remaining step.

That matters because deployment runs `git checkout --detach <sha>` on the server
and executes that commit's compose file and deploy script. A commit with no image
set can never be deployed, so a configuration-only change cannot take effect on
its own — it reaches the server only by riding along with the next
application-code commit.

The second half is worse than the first: the run concluded `success` with three
steps skipped. The reason is in the log, but the status against the commit says
the deployment succeeded. A pipeline that reports green for doing nothing is the
same failure class as an exporter that reports healthy while pushing to nowhere,
which is the defect this increment opened on.

Recorded against the CI/CD increment, which owns delivery, with the consequence
noted in the observability plan: the telemetry identity fix is merged but not
applied, and needs re-checking on the server after the next deployment that
carries application code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (2)
  • docs/increments/active/2026-07-25-production-cicd-zm/plan.md is excluded by !docs/**
  • docs/increments/active/2026-07-29-observability-pipeline/plan.md is excluded by !docs/**

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 5ad0b9cd-aa03-468e-a4a0-4ebdf72d6dae

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kl3inIT
kl3inIT merged commit 22345d2 into main Jul 29, 2026
14 checks passed
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