Skip to content

feat(etl): replace conditional status on repaired polling stack - #146

Draft
seonghobae wants to merge 10 commits into
repair/durable-job-poll-advisory-2a37789from
repair/durable-job-conditional-status-2e388ad
Draft

feat(etl): replace conditional status on repaired polling stack#146
seonghobae wants to merge 10 commits into
repair/durable-job-poll-advisory-2a37789from
repair/durable-job-conditional-status-2e388ad

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Stack repair purpose

This Draft replaces old-stack PR #131 with a non-destructive conditional-status branch rooted at the exact current repaired polling predecessor PR #145. The original #131 branch and its fail-first history remain preserved. No checks, reviews, approvals, statuses, comments, or base snapshots from #131 transfer to this replacement.

Exact current boundary

  • immediate predecessor PR: feat(etl): replace polling cadence on repaired pagination stack #145;
  • base branch: repair/durable-job-poll-advisory-2a37789;
  • exact live predecessor/base tip: 2e388ad163cd97c53688decdca63d2b2dd98366f;
  • replacement branch: repair/durable-job-conditional-status-2e388ad;
  • exact current head: 9e4d69e0bb33ab57627c697a5d028b5309eca2bb;
  • exact comparison: seven commits ahead, zero behind, merge base exactly 2e388ad163cd97c53688decdca63d2b2dd98366f;
  • changed files: exactly four bounded files;
  • GitHub mergeability: true;
  • intended repaired order: #121 -> #143 -> #144 -> #145 -> #146.

PR #145 remains unchanged at the exact base SHA above. Every future predecessor/base movement invalidates this evidence and requires fresh direct-base verification.

Stack-divergence RCA and remediation feasibility

Old PR #131 targets closed superseded PR #130's branch feat/durable-job-poll-advisory-v2@e7495b4fe558f543fe5fc1a1834e2f87542263a1. Continuing that branch would preserve an obsolete ancestry boundary after polling was replaced by #145.

Material options were tested against current repository authority and non-destructive stack policy:

The replacement path was therefore the smallest feasible root-cause repair.

TDD evidence

RED

Commit 62093451a73876bf92c42069100bb3dee0421212 added only EtlJobConditionalStatusTest on the exact #145 predecessor. PR-triggered CI run 31296131826 checked out that literal head. Ubuntu job 93201411617 reached the real status-controller production boundary and failed because the existing endpoint did not provide the required weak ETag / If-None-Match semantics. This was not an import, fixture, dependency, runner, or stale-checkout failure, so it is valid fail-first evidence.

GREEN and refactor

  • f7301e6faff1da31e42b8ca1b0eecc6dbe0da7ed adds owner-safe weak SHA-256 entity tags over the complete operator-visible status representation, ordinary conditional validation through Spring MVC, and explicit RFC wildcard handling after authenticated owner-scoped lookup;
  • 3e5edf5bf6ef224d20b0bf32ba6b27064d887792 records the combined Retry-After/ETag client, privacy, compatibility, rollback, RFC 9110, and Spring behavior contract in docs/etl/durable-job-polling.md;
  • CHANGELOG.md records only the conditional-status behavior and evidence. Whole-file Contents API publication briefly introduced historical wording drift during implementation; exact commit-diff inspection detected it, each unintended historical change was reverted, and the final net pull-request patch contains only two intended changelog additions;
  • exact current head 9e4d69e0bb33ab57627c697a5d028b5309eca2bb is the corrected final implementation head.

The implementation performs owner-safe lookup before conditional evaluation, preserves Cache-Control: no-store, distinguishes null from empty represented values in the validator input, does not expose payload/principal/idempotency/lease/SQL/exception data in the ETag, emits no ETag on submission responses, and adds no database object or persisted state.

Exact-current-head evidence

Accepted for literal head 9e4d69e0bb33ab57627c697a5d028b5309eca2bb on the unchanged stacked base:

  • CI run 31296658873: success; Ubuntu, macOS, and Windows jobs each completed literal exact-head checkout, exact-SHA verification, and their applicable full Maven test command;
  • Ubuntu job 93202744535: 399 etl-service tests passed, the seven conditional-status tests passed, JaCoCo reported all configured coverage checks met, 106 CDC tests passed, the gateway test suite passed, and the full Maven reactor finished BUILD SUCCESS;
  • Dependency Review run 31296658872: success;
  • CycloneDX SBOM run 31296658868: success;
  • CodeRabbit exact-head commit status: success;
  • GitHub mergeability: true;
  • exact comparison to feat(etl): replace polling cadence on repaired pagination stack #145: ahead 7, behind 0, merge base exactly the live feat(etl): replace polling cadence on repaired pagination stack #145 head;
  • exact changed paths: CHANGELOG.md, docs/etl/durable-job-polling.md, etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java, and etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java;
  • unresolved review threads: zero;
  • formal review submissions: zero.

The conditional self-hosted CI job is skipped and is not counted as positive evidence.

Not passing / still blocking:

  • SAST Semgrep and Security Scan are absent on this non-default stacked base and are not inferred from feat(etl): replace polling cadence on repaired pagination stack #145, protected develop, predecessor heads, or synthetic merges;
  • a qualifying independent non-author formal APPROVED review on this exact unchanged head is absent;
  • any predecessor/base/head change invalidates the current exact evidence.

Queued, pending, skipped-required, neutral-required, absent, cancelled, failed, stale-head, old-base, predecessor-head, and synthetic-merge-only evidence remain not passing.

Compatibility and rollback boundary

  • existing clients that omit If-None-Match continue receiving the same 200 status JSON plus ignorable response headers;
  • matching ordinary or wildcard validators return an empty 304 only after owner-safe lookup;
  • changed representations return 200 with a replacement weak validator;
  • Retry-After behavior from feat(etl): replace polling cadence on repaired pagination stack #145 remains intact;
  • no database object, migration, persisted state, lifecycle transition, shared cache, or mutation precondition is introduced;
  • rollback removes only the conditional validator behavior and its documentation/tests while preserving submission, listing, polling cadence, worker, lease, authorization, and persistence behavior.

Gate policy

Keep this PR Draft. Do not merge or deepen later old-stack branches in this invocation. After every predecessor integration, refresh the base and regenerate exact direct-base CI, Dependency Review, SBOM, SAST, Security Scan, commit status, review-thread, and independent non-author approval evidence. Merge only in dependency order with expected-head semantics and without weakening branch protection, security, coverage, or review requirements.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: bce5dca4-5004-4904-9395-798f09fb4944

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.

@opencode-agent opencode-agent Bot added area: data Database, schema, migration, ETL, or lineage priority: medium Normal-priority or P2 work status: draft Draft pull request type: feature New or expanded product capability labels Aug 22, 2026
@seonghobae seonghobae added the enhancement New feature or request label Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: data Database, schema, migration, ETL, or lineage enhancement New feature or request priority: medium Normal-priority or P2 work status: draft Draft pull request type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant