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

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

This branch was previously deployed

1 inactive deployment
stack-rebase — c6e8dc03 Deployed Sep 9, 2026 by mnoah1 via Rebase Stack #478
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