feat(etl): advertise bounded active-job polling cadence - #130
Conversation
|
Warning Review limit reached
Next review available in: 5 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 |
…sory-v2 Advance polling advisory to the repaired pagination and hourly OpenCode lineage without discarding either change set.
Carry the corrected hourly OpenCode tests and documentation through the repaired pagination head while preserving polling behavior.
|
@coderabbitai review Review exact current head |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== Checked-out commit =="
git rev-parse HEAD
git status --short
echo
echo "== Target commit availability =="
git cat-file -t 1cd1dbda288f57906ef00669f5de78393a29e16f
echo
echo "== Commit metadata =="
git show -s --format='%H%n%P%n%s' 1cd1dbda288f57906ef00669f5de78393a29e16f
echo
echo "== Files changed by requested commit versus first parent =="
git diff-tree --no-commit-id --name-status -r 1cd1dbda288f57906ef00669f5de78393a29e16f
echo
echo "== Compact outlines for changed Java files =="
git diff-tree --no-commit-id --name-only -r 1cd1dbda288f57906ef00669f5de78393a29e16f \
| grep -E '\.java$' \
| while IFS= read -r file; do
echo "--- $file"
ast-grep outline "$file" --items all || true
done
echo
echo "== Focused commit diff =="
git diff 1cd1dbda288f57906ef00669f5de78393a29e16f^ 1cd1dbda288f57906ef00669f5de78393a29e16f -- \
'*.java' '*.yml' '*.yaml' '*.properties' '*.md' '*.xml'
echo
echo "== Retry-After-related declarations and uses =="
rg -n -C 4 --glob '*.java' --glob '*.properties' --glob '*.yml' --glob '*.yaml' \
'(Retry-After|ResponseBodyAdvice|fixed-delay|fixedDelay|worker.*enabled|enabled.*worker)' .
echo
echo "== Controller, worker, and pagination contract definitions/usages =="
rg -n -C 3 --glob '*.java' \
'(class\s+EtlJobController|interface\s+EtlJobController|class\s+.*Worker|`@Scheduled`|Pageable|Page<|Slice<|owner)' .Length of output: 2143 🏁 Script executed: #!/bin/bash
set -euo pipefail
target="1cd1dbda288f57906ef00669f5de78393a29e16f"
echo "== PR `#130` metadata and changed files =="
gh pr view 130 --repo ContextualWisdomLab/mightyETL \
--json number,headRefOid,baseRefOid,baseRefName,headRefName,mergeCommit,files \
--jq '{number, headRefOid, baseRefOid, baseRefName, headRefName, mergeCommit, files: [.files[].path]}'
echo
echo "== Merge-result changes relative to each parent =="
for parent in $(git show -s --format=%P "$target"); do
echo "--- Parent: $parent"
git diff --name-status "$parent" "$target"
done
echo
echo "== Combined merge diff =="
git show --cc --find-renames --format=fuller "$target" -- \
'*.java' '*.properties' '*.yml' '*.yaml' '*.md' '*.xml'
echo
echo "== Candidate files =="
fd -t f . \
| grep -Ei '(etl.*job|job.*etl|retry|poll|worker|pagination|page|application.*\.(properties|ya?ml)$|changelog|rfc)'
echo
echo "== Relevant declarations and call sites in the exact checkout =="
rg -n -C 5 --glob '*.java' --glob '*.properties' --glob '*.yml' --glob '*.yaml' \
'(ResponseBodyAdvice|supports\s*\(|beforeBodyWrite\s*\(|Retry-After|EtlJobController|`@Scheduled`|fixedDelay|fixed-delay|worker.*enabled|enabled.*worker|Pageable|Page<|Slice<)' .Length of output: 65652 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== PR patch against its GitHub base =="
git diff --find-renames 349afe7f0e9c77279806f13b2d156e4bcd43bab1 1cd1dbda288f57906ef00669f5de78393a29e16f -- \
CHANGELOG.md \
docs/etl/durable-job-polling.md \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java \
etl-service/src/test/java/com/xtrmetl/etl/controller/EtlJobPollingAdviceTest.java
echo
echo "== Focused source maps =="
for file in \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java \
etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java \
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/test/java/com/xtrmetl/etl/controller/EtlJobPollingAdviceTest.java \
etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobPaginationControllerTest.java; do
echo "--- $file"
ast-grep outline "$file" --items all
done
echo
echo "== Full polling advice and direct tests =="
cat -n etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobPollingAdvice.java
echo "--- tests"
cat -n etl-service/src/test/java/com/xtrmetl/etl/controller/EtlJobPollingAdviceTest.java
echo
echo "== Controller endpoint signatures and status/list implementations =="
rg -n -C 12 --glob 'EtlJobController.java' \
'(@(Get|Post)Mapping|EtlJob(Status|Page|Accepted)Response|ResponseEntity|list|status|find)' \
etl-service/src/main/java
echo
echo "== Worker activation and property validation =="
sed -n '1,155p' etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorker.java
sed -n '1,115p' etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorkerProperties.java
echo
echo "== Pagination controller contract tests =="
cat -n etl-service/src/test/java/com/xtrmetl/etl/job/EtlJobPaginationControllerTest.javaLength of output: 91663
I found no actionable issues. Verified behavior:
Any later commit requires a new review scope, as requested.
|
|
@coderabbitai review Please review the exact live head against its declared #129 stacked base only. Verify Retry-After is emitted only for PENDING/RUNNING status representations when the durable worker is actually enabled, delay derives from validated fixed-delay configuration and rounds positive fractional seconds upward, terminal/disabled-worker/unrelated responses omit the header, no sensitive job/lease/principal/queue data enters the advisory, and inherited owner 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"
declared_head="e7495b4fe558f543fe5fc1a1834e2f87542263a1"
declared_base="683e1a8b132772236b561b28d5d204c866a08034"
echo "== Live pull request metadata =="
gh pr view 130 --repo "$repo" \
--json number,headRefOid,baseRefOid,headRefName,baseRefName,mergeable,state,files \
--jq '{number, headRefOid, baseRefOid, headRefName, baseRefName, mergeable, state, files: [.files[].path]}'
echo
echo "== Checked-out revision =="
git rev-parse HEAD
git status --short
echo
echo "== Declared revisions =="
git show -s --format='head %H%nparents %P%nsubject %s' "$declared_head"
git show -s --format='base %H%nparents %P%nsubject %s' "$declared_base"
echo
echo "== Required ancestry =="
git merge-base --is-ancestor "$declared_base" "$declared_head" && echo "declared base is an ancestor of declared head"
echo
echo "== Exact declared-base-to-head changed files =="
git diff --name-status "$declared_base" "$declared_head"
echo
echo "== Exact declared-base-to-head patch for polling and documentation =="
git diff --find-renames "$declared_base" "$declared_head" -- \
'etl-service/src/main/java/**/*.java' \
'etl-service/src/test/java/**/*.java' \
'etl-service/src/main/resources/**' \
'CHANGELOG.md' \
'docs/**'
echo
echo "== Candidate file map =="
fd -t f . | rg '(EtlJob(PollingAdvice|Controller|Worker|WorkerProperties|PaginationControllerTest)|Nim|NVIDIA|Pagination|durable-job-polling|CHANGELOG)'
echo
echo "== Compact source and test outlines =="
for file in $(fd -t f . | rg '(EtlJobPollingAdvice|EtlJobController|EtlJobWorker|EtlJobWorkerProperties|EtlJobPaginationControllerTest|Nim|NVIDIA)' | sort); do
echo "--- $file"
ast-grep outline "$file" --items all || true
done
echo
echo "== Polling, worker, status, pagination, and NVIDIA-NIM declarations and tests =="
rg -n -C 5 \
--glob '*.java' --glob '*.properties' --glob '*.yml' --glob '*.yaml' \
'(ResponseBodyAdvice|beforeBodyWrite|supports\s*\(|Retry-After|EtlJobStatusResponse|PENDING|RUNNING|SUCCEEDED|FAILED|fixed-delay|fixedDelay|worker\.enabled|`@ConditionalOnProperty`|`@Scheduled`|Pageable|Page<|owner|NVIDIA|Nim)' \
etl-serviceLength of output: 225639 🏁 Script executed: #!/bin/bash
set -euo pipefail
base="683e1a8b132772236b561b28d5d204c866a08034"
head="e7495b4fe558f543fe5fc1a1834e2f87542263a1"
echo "== Worker activation and scheduler configuration =="
sed -n '1,145p' etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorker.java
echo
sed -n '1,105p' etl-service/src/main/java/com/xtrmetl/etl/job/EtlJobWorkerProperties.java
echo
echo "== Exact EtlJobController response paths =="
sed -n '85,215p' etl-service/src/main/java/com/xtrmetl/etl/controller/EtlJobController.java
echo
echo "== Advice and exception-handler topology =="
fd -t f -e java . etl-service/src/main/java/com/xtrmetl/etl/controller \
| sort \
| while IFS= read -r file; do
echo "--- $file"
rg -n -C 3 '(ControllerAdvice|RestControllerAdvice|ResponseBodyAdvice|Retry-After|RETRY_AFTER|ExceptionHandler)' "$file" || true
done
echo
echo "== All Retry-After header writers in repository =="
rg -n -C 4 --glob '*.java' --glob '*.kt' --glob '*.groovy' \
'(HttpHeaders\.RETRY_AFTER|Retry-After|RETRY_AFTER)' .
echo
echo "== Inherited worker, pagination, and NVIDIA-NIM files changed from declared base =="
git diff --name-status "$base" "$head" -- \
'etl-service/src/main/java/com/xtrmetl/etl/job/**' \
'etl-service/src/test/java/com/xtrmetl/etl/job/**' \
'.github/**' \
'etl-service/src/test/java/com/xtrmetl/etl/documentation/**'
echo
echo "== NVIDIA-NIM workflow contract source and tests =="
fd -t f . .github etl-service/src/test/java 2>/dev/null \
| rg '(HourlyOpenCode|opencode.*\.ya?ml|.*\.ya?ml$)' \
| while IFS= read -r file; do
echo "--- $file"
rg -n -C 2 '(NVIDIA_NIM_API_KEY|NVIDIA_API_KEY|MODEL:|opencode run|pull-requests: write|actions: write|contents: write|/reviews|/merge)' "$file" || true
doneLength of output: 41040
I found no actionable issues. Verified:
I did not retarget, update, merge, release, change
|
|
Queued @cwl-noema-review ; Rejected @opencode-agent: repository is absent from OPENCODE_REPOSITORY_DISPATCH_TARGETS for PR #130 at head |
Superseded by repaired-stack replacement #145
This PR is closed without merge because its immediate base is the superseded pagination branch
feat/durable-job-cursor-list-v2@683e1a8b132772236b561b28d5d204c866a08034, whose PR #129 has already been replaced by repaired-stack PR #144. Keeping this PR open would preserve an obsolete ancestry boundary and encourage downstream work to deepen the invalid stack.The branch
feat/durable-job-poll-advisory-v2is intentionally preserved at exact heade7495b4fe558f543fe5fc1a1834e2f87542263a1, including its non-destructive historical merge and fail-first lineage. Nothing is force-pushed, rewritten, or deleted.Replacement PR #145 was created from the exact current repaired predecessor #144 head
2a37789e651316e9bf29cbbd68902aa827a50c63and reapplies the same bounded four-file polling product slice through auditable commits. Its exact current head is2e388ad163cd97c53688decdca63d2b2dd98366f; it is four commits ahead, zero behind, and has the predecessor SHA as its exact merge base.Replacement evidence
PR #145 regenerated its own evidence from scratch:
f6a7f3dc0b6659f05736916ef6cbb493fdbbee4d: exact-head CI reached test compilation and failed specifically because productionEtlJobPollingAdvicedid not yet exist;793f823259962a03e260fe2fd44e6a9f93a37f16;2e840691d2ddb23f06377051c232d5498c09ed37;2e388ad163cd97c53688decdca63d2b2dd98366fwith successful CI run31294055411, Dependency Review31294055431, CycloneDX SBOM31294055437, and CodeRabbit exact-head status.No checks, statuses, reviews, approvals, review-thread conclusions, synthetic merges, or base snapshots from this PR transfer to #145. The replacement remains Draft and must still regenerate missing direct-base SAST/Security evidence and a qualifying independent non-author formal approval before eventual protected merge.
Historical product intent remains unchanged: active owner-scoped durable-job status responses may advertise RFC 9110
Retry-Afteronly while local worker execution is enabled, with terminal/disabled-worker responses omitting the advisory and no sensitive data added to the response.