feat(etl): add conditional durable-job status validation - #131
feat(etl): add conditional durable-job status validation#131seonghobae wants to merge 7 commits into
Conversation
|
Warning Review limit reached
Next review available in: 4 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
Comment |
…onal-status-v2 Advance conditional status validation to the repaired polling and hourly OpenCode lineage without discarding either change set.
Carry the corrected hourly OpenCode tests and documentation through the repaired polling head while preserving conditional status behavior.
|
@coderabbitai review Review exact current head |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
requested='aa7bb331faf8e7b3be439a17c36bafed9fc9638d'
printf '%s\n' '== Checkout identity =='
git rev-parse HEAD
git cat-file -t "$requested"
git show -s --format='%H%n%P%n%s' "$requested"
printf '%s\n' '== Changed paths in reviewed commit =='
git diff-tree --no-commit-id --name-status -r "$requested"
printf '%s\n' '== Changed paths relative to first parent =='
parent="$(git rev-parse "${requested}^")"
git diff --name-status "$parent" "$requested"
printf '%s\n' '== Java source and test outlines =='
fd -e java . | while IFS= read -r file; do
ast-grep outline "$file" --items all --type class,interface,method --match 'Job|Status|ETag|Etag|Tag|Controller' 2>/dev/null || true
done
printf '%s\n' '== Conditional request, ETag, cache, and canonicalization references =='
rg -n -i -C 5 \
'if-none-match|etag|e-tag|cache-control|not modified|notmodified|sha-?256|canonical|null marker|length.?prefix|durable.?job|job.?status' \
-g '*.java' -g '*.md' -g '*.yml' -g '*.yaml' -g '*.properties' .
printf '%s\n' '== Diff =='
git diff --find-renames --find-copies --unified=80 "$parent" "$requested" -- \
'*.java' '*.md' '*.yml' '*.yaml' '*.properties'Length of output: 196913 🏁 Script executed: #!/bin/bash
set -euo pipefail
commit='aa7bb331faf8e7b3be439a17c36bafed9fc9638d'
echo '== Exact commit identity =='
printf 'checked_out_head='
git rev-parse HEAD
printf 'requested_commit='
git rev-parse "$commit"
git show -s --format='subject=%s%nparents=%P%ncommit_date=%cI' "$commit"
echo '== Paths in requested commit related to status validation =='
git ls-tree -r --name-only "$commit" | rg -i \
'(etag|entity.?tag|conditional|if.?none.?match|job.*status|status.*job|polling|durable.*job)'
echo '== Matching source/test lines in requested commit =='
git grep -n -i -E \
'if-none-match|etag|entity.?tag|not.?modified|sha-?256|canonical|null|cache-control|findowned' \
"$commit" -- '*.java' '*.md' || true
echo '== Commit-level conditional-status diff =='
parent="$(git rev-parse "${commit}^")"
git diff --find-renames --unified=30 "$parent" "$commit" -- \
'etl-service/src/main/**/*.java' \
'etl-service/src/test/**/*.java' \
'docs/**/*.md' \
'CHANGELOG.md'
echo '== Exact controller source slices =='
git ls-tree -r --name-only "$commit" | rg 'EtlJobController\.java$|EtlJob.*Status.*Test\.java$|.*Etag.*\.java$|.*ETag.*\.java$' \
| while IFS= read -r path; do
echo "--- $path ---"
git show "$commit:$path" | nl -ba | sed -n '1,420p'
doneLength of output: 201875 🏁 Script executed: #!/bin/bash
set -euo pipefail
commit='aa7bb331faf8e7b3be439a17c36bafed9fc9638d'
show_file() {
local path="$1"
echo "===== ${path} ====="
git show "${commit}:${path}"
}
show_file 'etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java'
show_file 'etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java'
show_file 'etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java'
show_file 'etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobSnapshot.java'
show_file 'etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java'
echo '===== Exact conditional-status paths and definitions ====='
git grep -n -E \
'class EtlJobPollingAdvice|record EtlJobStatusResponse|ResponseEntity<|checkNotModified|If-None-Match|IF_NONE_MATCH|ETAG|ETag|EntityTag|MessageDigest|failureCode|findOwned' \
"$commit" -- \
'etl-service/src/main/java/**/*.java' \
'etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java' \
|| trueLength of output: 52110
I found no blocking issues. Verified items:
This review does not apply to a later head. CI remains required for runtime verification.
|
|
@coderabbitai review Please review the exact live head against its declared #130 stacked base only. Verify weak ETags are built from typed marker-separated length-prefixed values for every operator-visible field, null remains distinct from empty, authentication and owner-safe lookup precede ordinary and wildcard If-None-Match handling, validator invalidates on every represented lifecycle field change, Cache-Control:no-store and body compatibility are preserved, and inherited polling/pagination/worker/NVIDIA-NIM contracts remain intact. Review only; do not retarget, update the branch, remove manual-merge, merge, release, or alter protections. |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/mightyETL'
expected_head='addfe57e8948a8e274b297cf629582895fb760fc'
expected_base='e7495b4fe558f543fe5fc1a1834e2f87542263a1'
echo '== GitHub pull request identity =='
gh pr view 131 --repo "$repo" --json number,headRefOid,baseRefOid,baseRefName,headRefName,mergeable,state \
--jq '{number, headRefOid, baseRefOid, baseRefName, headRefName, mergeable, state}'
echo '== Local commit identity and ancestry =='
printf 'checked_out_head='; git rev-parse HEAD
printf 'expected_head='; git rev-parse "$expected_head"
printf 'expected_base='; git rev-parse "$expected_base"
git merge-base --is-ancestor "$expected_base" "$expected_head"
echo 'base_is_ancestor=true'
git show -s --format='head=%H%nparents=%P%nsubject=%s' "$expected_head"
git show -s --format='base=%H%nsubject=%s' "$expected_base"
echo '== Changed paths from declared base to exact head =='
git diff --name-status "$expected_base" "$expected_head"
echo '== Map candidate source and test files =='
fd -e java -e md . | rg -i \
'(EtlJob.*(Controller|Polling|Status|Conditional|Pagination|Worker)|Nim|Nvidia|CHANGELOG)'
echo '== Conditional request and contract references =='
rg -n -i -C 3 \
'if-none-match|etag|e-tag|checkNotModified|not modified|cache-control|no-store|sha-256|messageDigest|length.?prefix|null marker|findOwned|pagination|polling|worker|nvidia|nim' \
-g '*.java' -g '*.md' -g '*.yml' -g '*.yaml' .
echo '== Exact diff, restricted to code, tests, and changelog =='
git diff --find-renames --unified=55 "$expected_base" "$expected_head" -- \
'*.java' '*.md' '*.yml' '*.yaml'Length of output: 202151 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo='ContextualWisdomLab/mightyETL'
head='addfe57e8948a8e274b297cf629582895fb760fc'
base='e7495b4fe558f543fe5fc1a1834e2f87542263a1'
echo '== Exact GitHub and local identities =='
gh pr view 131 --repo "$repo" --json headRefOid,baseRefOid,mergeable,state \
--jq '{headRefOid, baseRefOid, mergeable, state}'
printf 'local_head='; git rev-parse HEAD
printf 'review_head='; git rev-parse "$head"
printf 'review_base='; git rev-parse "$base"
git merge-base --is-ancestor "$base" "$head" && echo 'declared_base_is_ancestor=true'
echo '== Full declared-base diff path list =='
git diff --name-status "$base" "$head"
echo '== Relevant file outlines =='
for path in \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobPollingAdviceTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobPaginationControllerTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobWorkerTest.java; do
if git cat-file -e "$head:$path" 2>/dev/null; then
echo "--- OUTLINE $path ---"
git show "$head:$path" > "/tmp/$(basename "$path")"
ast-grep outline "/tmp/$(basename "$path")" --items all --type class,method --view compact || true
fi
done
echo '== Exact conditional implementation =='
git show "$head:etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java" \
| nl -ba | sed -n '150,330p'
git show "$head:etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java" \
| nl -ba | sed -n '1,180p'
git show "$head:etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java" \
| nl -ba | sed -n '1,260p'
git show "$head:etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java" \
| nl -ba | sed -n '1,280p'
echo '== Status endpoint and polling advice changes relative to base =='
git diff --unified=30 "$base" "$head" -- \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java
echo '== Inherited-contract file changes relative to base =='
for path in \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorker.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorkerProperties.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobService.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlApiProblemHandler.java \
etl-service/src/main/java/com/xtrmetl/etl/nim/NvidiaNimClient.java; do
if git cat-file -e "$head:$path" 2>/dev/null; then
printf '%s: ' "$path"
git diff --quiet "$base" "$head" -- "$path" && echo 'unchanged' || echo 'changed'
fi
done
echo '== Test coverage references for representation fields and inherited contracts =='
rg -n -C 2 \
'createdAt|updatedAt|attemptCount|jobStatus|failureCode|If-None-Match|ETag|Retry-After|pagination|NVIDIA|Nim|pollOnce' \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobPollingAdviceTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobPaginationControllerTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobWorkerTest.java 2>/dev/null || trueLength of output: 6092 🏁 Script executed: #!/bin/bash
set -euo pipefail
head='addfe57e8948a8e274b297cf629582895fb760fc'
base='e7495b4fe558f543fe5fc1a1834e2f87542263a1'
show_range() {
local path="$1"
local start="$2"
local end="$3"
echo "--- ${path}:${start}-${end} ---"
git show "${head}:${path}" | cat -n | sed -n "${start},${end}p"
}
echo '== Source outlines =='
for path in \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java; do
echo "--- OUTLINE ${path} ---"
git show "${head}:${path}" > "/tmp/$(basename "$path")"
ast-grep outline "/tmp/$(basename "$path")" --items all --type class,method --view signatures || true
done
echo '== Controller conditional status implementation =='
show_range etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java 150 320
echo '== Status response model =='
show_range etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java 1 180
echo '== Polling response advice =='
show_range etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java 1 280
echo '== Conditional status tests =='
show_range etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobConditionalStatusTest.java 1 280
echo '== Base-to-head diff for controller and response model =='
git diff --unified=40 "$base" "$head" -- \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobStatusResponse.java
echo '== Locate NVIDIA-NIM implementation and verify it is unchanged =='
fd -i -e java 'nim|nvidia' etl-service/src/main/java | while IFS= read -r path; do
printf '%s: ' "$path"
git diff --quiet "$base" "$head" -- "$path" && echo 'unchanged' || echo 'changed'
done
echo '== Verify inherited implementation files are unchanged =='
for path in \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorker.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorkerProperties.java \
etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobService.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlApiProblemHandler.java; do
printf '%s: ' "$path"
git diff --quiet "$base" "$head" -- "$path" && echo 'unchanged' || echo 'changed'
doneLength of output: 44663
I found no blocking issues. Verified items:
This was a static review. It does not replace exact-head runtime CI and security evidence.
|
|
Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #131 at head |
|
Superseded by Draft PR #146 on the repaired stack. Replacement #146 descends from exact repaired predecessor #145 and preserves the bounded conditional-status implementation and fail-first history through ordinary auditable commits. Its current exact head |
Stack dependency and current repair state
This pull request is locally stacked on PR #130 at exact base
e7495b4fe558f543fe5fc1a1834e2f87542263a1; exact current head isaddfe57e8948a8e274b297cf629582895fb760fc. The immediate local boundary remains exact and GitHub reports this PR mergeable.The global stack is not eligible for progression. PR #122 is closed as superseded by draft replacement #138. The earliest invalid boundary remains exact current PR #121 head
75265fae9fcf5faac6f8b9cab63247ac86f23dd4-> #138, which is diverged. PR #129 also remains non-mergeable against the closed former-worker branch. Do not deepen or repair this conditional-status slice until the upstream#121 -> #138 -> repaired/replacement #129 -> #130chain is valid. Old checks, reviews, statuses, approvals, and base snapshots do not transfer across later repairs.The former conditional-status head
aa7bb331faf8e7b3be439a17c36bafed9fc9638dwas reconciled non-destructively with PR #130's exact head at merge commitaddfe57e8948a8e274b297cf629582895fb760fc, preserving implementation and fail-first history, including the null-versus-empty validator regression, without force push,ours/theirsshortcuts, discarded predecessor work, or rewritten test evidence.Closes #127.
Product gap
Adds standards-based weak entity-tag validation to the authenticated owner-scoped durable-job status resource, allowing unchanged polls to return an empty RFC 9110
304 Not Modifiedresponse instead of retransmitting the complete JSON representation.Implemented bounded slice
ETagfrom typed, marker-separated, length-prefixed canonical values for every operator-visible status field;If-None-Match: *handling only after authentication and owner-safe resource selection;Cache-Control: no-store, owner scoping, lease fencing, worker-availability polling behavior, and existing wire body;CHANGELOG.mdentries.Current exact-head evidence
For exact head
addfe57e8948a8e274b297cf629582895fb760fcon its current stacked target:Successful exact-head evidence:
31093530695: success;31093530341: success;31093530750: success;Not passing / still blocking:
#121 -> #138is diverged and feat(etl): list durable jobs with owner-scoped cursors #129 is not a valid next boundary;APPROVEDreview is absent.The successful evidence above is exact-head evidence only for this current target and does not authorize stack progression or transfer to a later head/base. Queued, pending, absent, skipped-required, neutral-required, cancelled, failed, stale-head, predecessor-head, old-base, and synthetic-merge-only evidence are not passing.
Safety boundaries
404 etl_job_not_foundsurface and receive no validator;Cache-Control: no-storeremains authoritative; the tag supports explicit authenticated revalidation and does not authorize shared caching;Merge policy
Keep
manual-mergeapplied. Repair the earliest invalid stack boundaries first, then repair each downstream boundary from its exact current predecessor without destructive rewriting. After all predecessors integrate, retarget the valid conditional-status PR to protecteddevelop, regenerate complete direct-base exact-head CI, SAST, security, coverage, packaging, provenance/SBOM, status, review-thread, automated-review, and independent non-author approval evidence, and merge only with expected-head semantics. Never bypass stack order, branch protection, tests, or security gates.