feat(etl): replace conditional status on repaired polling stack - #146
Draft
seonghobae wants to merge 10 commits into
Draft
feat(etl): replace conditional status on repaired polling stack#146seonghobae wants to merge 10 commits into
seonghobae wants to merge 10 commits into
Conversation
Contributor
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
This was referenced Aug 9, 2026
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.
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
repair/durable-job-poll-advisory-2a37789;2e388ad163cd97c53688decdca63d2b2dd98366f;repair/durable-job-conditional-status-2e388ad;9e4d69e0bb33ab57627c697a5d028b5309eca2bb;2e388ad163cd97c53688decdca63d2b2dd98366f;#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
62093451a73876bf92c42069100bb3dee0421212added onlyEtlJobConditionalStatusTeston the exact #145 predecessor. PR-triggered CI run31296131826checked out that literal head. Ubuntu job93201411617reached the real status-controller production boundary and failed because the existing endpoint did not provide the required weak ETag /If-None-Matchsemantics. This was not an import, fixture, dependency, runner, or stale-checkout failure, so it is valid fail-first evidence.GREEN and refactor
f7301e6faff1da31e42b8ca1b0eecc6dbe0da7edadds 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;3e5edf5bf6ef224d20b0bf32ba6b27064d887792records the combined Retry-After/ETag client, privacy, compatibility, rollback, RFC 9110, and Spring behavior contract indocs/etl/durable-job-polling.md;CHANGELOG.mdrecords 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;9e4d69e0bb33ab57627c697a5d028b5309eca2bbis 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
9e4d69e0bb33ab57627c697a5d028b5309eca2bbon the unchanged stacked base:31296658873: success; Ubuntu, macOS, and Windows jobs each completed literal exact-head checkout, exact-SHA verification, and their applicable full Maven test command;93202744535: 399etl-servicetests 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 finishedBUILD SUCCESS;31296658872: success;31296658868: success;CHANGELOG.md,docs/etl/durable-job-polling.md,etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java, andetl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java;The conditional self-hosted CI job is skipped and is not counted as positive evidence.
Not passing / still blocking:
develop, predecessor heads, or synthetic merges;APPROVEDreview on this exact unchanged head is absent;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
If-None-Matchcontinue receiving the same200status JSON plus ignorable response headers;304only after owner-safe lookup;200with a replacement weak validator;Retry-Afterbehavior from feat(etl): replace polling cadence on repaired pagination stack #145 remains intact;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.