Skip to content

feat(stovepipe): add request logs for outcomes and lifecycle events - #666

Merged
mnoah1 merged 4 commits into
mainfrom
mnoah1/stovepipe-request-history-build-outcomes
Sep 9, 2026
Merged

feat(stovepipe): add request logs for outcomes and lifecycle events#666
mnoah1 merged 4 commits into
mainfrom
mnoah1/stovepipe-request-history-build-outcomes

Conversation

@mnoah1

@mnoah1 mnoah1 commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR builds on #665, which records Process-owned request states.

Intent:

  • Retain terminal request outcomes and the durable build/fact milestones that explain them.
  • Let queue redelivery repair any missing occurrence before downstream work continues.

Changes:

  • Persist succeeded, failed, and cancelled request states with their build outcome reasons.
  • Record build_triggered, build_finished, and validation_fact_recorded events with stable identities and bounded metadata.
  • Keep each source write ahead of event materialization and materialization ahead of downstream publication or derived work.
  • Wire the shared materializer into Build, BuildSignal, and Record.

Test Plan

  • Run the focused Build, BuildSignal, Record, request-log materializer, and server wiring Bazel tests.

Revert Plan

  • Revert this change to stop recording terminal outcomes and lifecycle events.

Generated by the 🪄 pr-create skill in devexp-agent-marketplace

Issues

@mnoah1 mnoah1 changed the title feat(stovepipe): record build outcome states feat(stovepipe): record request outcomes and lifecycle events Sep 2, 2026
@mnoah1
mnoah1 marked this pull request as ready for review September 2, 2026 22:49
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners September 2, 2026 22:49
@mnoah1 mnoah1 changed the title feat(stovepipe): record request outcomes and lifecycle events feat(stovepipe): add request logs for outcomes and lifecycle events Sep 2, 2026
Comment thread stovepipe/controller/build/build.go Outdated
Comment thread stovepipe/controller/build/build.go Outdated
Comment thread stovepipe/controller/build/build.go Outdated
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
mnoah1 force-pushed the mnoah1/stovepipe-request-history-build-outcomes branch 2 times, most recently from 1ece7b6 to 2c658e2 Compare September 9, 2026 15:26
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
mnoah1 force-pushed the mnoah1/stovepipe-request-history-build-outcomes branch from 2c658e2 to c901e08 Compare September 9, 2026 15:32
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
mnoah1 force-pushed the mnoah1/stovepipe-request-history-build-outcomes branch from c901e08 to f54a428 Compare September 9, 2026 18:42
Comment thread stovepipe/controller/build/build.go Outdated
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
mnoah1 force-pushed the mnoah1/stovepipe-request-history-build-outcomes branch from f54a428 to 9cf7a49 Compare September 9, 2026 21:47
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
mnoah1 force-pushed the mnoah1/stovepipe-request-history-build-outcomes branch from 9cf7a49 to c6e8dc0 Compare September 9, 2026 21:55
@mnoah1
mnoah1 added this pull request to the merge queue Sep 9, 2026
Merged via the queue into main with commit 9adfbb2 Sep 9, 2026
15 checks passed
@behinddwalls
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants