feat(stovepipe): add request logs for outcomes and lifecycle events - #666
Merged
Conversation
mnoah1
marked this pull request as ready for review
September 2, 2026 22:49
mnoah1
requested review from
a team,
behinddwalls and
sbalabanov
as code owners
September 2, 2026 22:49
sbalabanov
requested changes
Sep 4, 2026
Base automatically changed from
mnoah1/stovepipe-request-history-processing
to
main
September 9, 2026 15:00
mnoah1
added a commit
that referenced
this pull request
Sep 9, 2026
Summary: This PR builds on #666, which records normal request outcomes and lifecycle events. Intent: - Retain the terminal reason when an exhausted pipeline stage forces a request to fail. - Repair a missing failure occurrence when DLQ reconciliation redelivers after the request write. Changes: - Record processing_failed for Process and Build DLQ reconciliation. - Record build_polling_exhausted for BuildSignal DLQ reconciliation. - Persist the failed request state before its log and preserve all other terminal outcomes. - Wire the shared request-log materializer into the three DLQ controllers. Test Plan: - Exercise new failure logging, retry repair, write ordering, stage-specific reasons, and server wiring in Bazel tests. Revert Plan: - Revert this change to leave DLQ reconciliation state-only. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
mnoah1
force-pushed
the
mnoah1/stovepipe-request-history-build-outcomes
branch
2 times, most recently
from
September 9, 2026 15:26
1ece7b6 to
2c658e2
Compare
mnoah1
added a commit
that referenced
this pull request
Sep 9, 2026
Summary: This PR builds on #666, which records normal request outcomes and lifecycle events. Intent: - Retain the terminal reason when an exhausted pipeline stage forces a request to fail. - Repair a missing failure occurrence when DLQ reconciliation redelivers after the request write. Changes: - Record processing_failed for Process and Build DLQ reconciliation. - Record build_polling_exhausted for BuildSignal DLQ reconciliation. - Persist the failed request state before its log and preserve all other terminal outcomes. - Wire the shared request-log materializer into the three DLQ controllers. Test Plan: - Exercise new failure logging, retry repair, write ordering, stage-specific reasons, and server wiring in Bazel tests. Revert Plan: - Revert this change to leave DLQ reconciliation state-only. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
mnoah1
force-pushed
the
mnoah1/stovepipe-request-history-build-outcomes
branch
from
September 9, 2026 15:32
2c658e2 to
c901e08
Compare
mnoah1
added a commit
that referenced
this pull request
Sep 9, 2026
Summary: This PR builds on #666, which records normal request outcomes and lifecycle events. Intent: - Retain the terminal reason when an exhausted pipeline stage forces a request to fail. - Repair a missing failure occurrence when DLQ reconciliation redelivers after the request write. Changes: - Record processing_failed for Process and Build DLQ reconciliation. - Record build_polling_exhausted for BuildSignal DLQ reconciliation. - Persist the failed request state before its log and preserve all other terminal outcomes. - Wire the shared request-log materializer into the three DLQ controllers. Test Plan: - Exercise new failure logging, retry repair, write ordering, stage-specific reasons, and server wiring in Bazel tests. Revert Plan: - Revert this change to leave DLQ reconciliation state-only. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
mnoah1
force-pushed
the
mnoah1/stovepipe-request-history-build-outcomes
branch
from
September 9, 2026 18:42
c901e08 to
f54a428
Compare
sbalabanov
reviewed
Sep 9, 2026
sbalabanov
approved these changes
Sep 9, 2026
mnoah1
added a commit
that referenced
this pull request
Sep 9, 2026
Summary: This PR builds on #666, which records normal request outcomes and lifecycle events. Intent: - Retain the terminal reason when an exhausted pipeline stage forces a request to fail. - Repair a missing failure occurrence when DLQ reconciliation redelivers after the request write. Changes: - Record processing_failed for Process and Build DLQ reconciliation. - Record build_polling_exhausted for BuildSignal DLQ reconciliation. - Persist the failed request state before its log and preserve all other terminal outcomes. - Wire the shared request-log materializer into the three DLQ controllers. Test Plan: - Exercise new failure logging, retry repair, write ordering, stage-specific reasons, and server wiring in Bazel tests. Revert Plan: - Revert this change to leave DLQ reconciliation state-only. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
mnoah1
force-pushed
the
mnoah1/stovepipe-request-history-build-outcomes
branch
from
September 9, 2026 21:47
f54a428 to
9cf7a49
Compare
Summary: This PR builds on #665, which records Process-owned request states. Intent: - Retain terminal build outcomes before the request advances to Record. - Let BuildSignal redelivery repair a missing terminal occurrence from durable state. Changes: - Persist succeeded, failed, and cancelled request logs with their build outcome reasons. - Keep the request CAS and slot release ahead of materialization, and materialization ahead of Record publication. - Wire the shared materializer into BuildSignal and cover transition and retry failures. Test Plan: - Run the BuildSignal controller, server wiring, and request-log materializer Bazel tests. Revert Plan: - Revert this change to stop recording BuildSignal terminal outcomes. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
mnoah1
added a commit
that referenced
this pull request
Sep 9, 2026
Summary: This PR builds on #666, which records normal request outcomes and lifecycle events. Intent: - Retain the terminal reason when an exhausted pipeline stage forces a request to fail. - Repair a missing failure occurrence when DLQ reconciliation redelivers after the request write. Changes: - Record processing_failed for Process and Build DLQ reconciliation. - Record build_polling_exhausted for BuildSignal DLQ reconciliation. - Persist the failed request state before its log and preserve all other terminal outcomes. - Wire the shared request-log materializer into the three DLQ controllers. Test Plan: - Exercise new failure logging, retry repair, write ordering, stage-specific reasons, and server wiring in Bazel tests. Revert Plan: - Revert this change to leave DLQ reconciliation state-only. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
mnoah1
force-pushed
the
mnoah1/stovepipe-request-history-build-outcomes
branch
from
September 9, 2026 21:55
9cf7a49 to
c6e8dc0
Compare
behinddwalls
deleted the
mnoah1/stovepipe-request-history-build-outcomes
branch
September 10, 2026 00:04
aeonframework
pushed a commit
to aeonframework/submitqueue
that referenced
this pull request
Sep 10, 2026
## Summary Intent: - Retain Process-owned state transitions before dependent work is published or acknowledged. - Let redelivery repair missing occurrences from durable Request state. Changes: - Persist processing after its successful CAS and before hook or Build publication. - Persist superseded with its outcome reason after transition and on redelivery. - Use the canonical Request version after CAS conflicts so stable occurrence IDs remain correct. ## Test Plan - Run the Process controller, server wiring, and request-log materializer Bazel tests. - Run formatting, lint, Gazelle, and module tidy checks. ## Revert Plan - Revert this PR to stop recording processing and superseded request states. ## Issues ## Stack 1. @ uber#665 1. uber#666 1. uber#667
aeonframework
pushed a commit
to aeonframework/submitqueue
that referenced
this pull request
Sep 10, 2026
## Summary This PR builds on uber#666, which records normal request outcomes and lifecycle events. Intent: - Retain the terminal reason when an exhausted pipeline stage forces a request to fail. - Repair a missing failure occurrence when DLQ reconciliation redelivers after the request write. Changes: - Record processing_failed for Process and Build DLQ reconciliation. - Record build_polling_exhausted for BuildSignal DLQ reconciliation. - Persist the failed request state before its log and preserve all other terminal outcomes. - Wire the shared request-log materializer into the three DLQ controllers. ## Test Plan - Exercise new failure logging, retry repair, write ordering, stage-specific reasons, and server wiring in Bazel tests. ## Revert Plan - Revert this change to leave DLQ reconciliation state-only. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub> ## AI Verification > Validated at `81789e9` on Sep 9 21:46 UTC · 21 files analyzed · 2s | Validator | Status | Issues | |----------|--------|--------| | go-coverage | not_applicable | 0 | | ios-test | not_applicable | 0 | | web | not_applicable | 0 | | diff-template | not_applicable | 0 | | android-lint | not_applicable | 0 | | android-coverage | not_applicable | 0 | | uber-one | not_applicable | 0 | | go-thrift-lint | not_applicable | 0 | | java-lint | not_applicable | 0 | | java-coverage | not_applicable | 0 | | ios-lint | not_applicable | 0 | | go-lint | not_applicable | 0 | | go-proto-lint | not_applicable | 0 | | custom | not_applicable | 0 | | ureview | completed | 0 | **0** issues detected <sub>Skipped validators: claude · [EngWiki](http://t.uber.com/ai-verification)</sub> ## Issues
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.
Summary
This PR builds on #665, which records Process-owned request states.
Intent:
Changes:
Test Plan
Revert Plan
Generated by the 🪄 pr-create skill in devexp-agent-marketplace
Issues