Skip to content

feat(stovepipe): record accepted request state - #658

Merged
mnoah1 merged 2 commits into
mainfrom
mnoah1/stovepipe-request-history-accepted
Sep 2, 2026
Merged

mnoah1 merged 2 commits into
mainfrom
mnoah1/stovepipe-request-history-accepted

Conversation

@mnoah1

@mnoah1 mnoah1 commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Intent:

  • Establish every newly admitted request initial accepted-state log before dependent processing begins.
  • Make an Ingest retry repair a missing accepted entry before republishing work.

Changes:

  • Construct the accepted-state log with NewRequestStateLog and persist it through Materializer.PersistLog.
  • Pass the queue-scoped storage aggregate so future summary projections remain internal to the materializer.
  • Stop queue-pointer advancement and process publication when materialization fails.
  • Wire one materializer instance into Ingest and cover new, duplicate, repair, and failure paths.

This PR builds on #657, which introduces the request log materializer.

Test Plan

  • bazel test //stovepipe/controller:go_default_test //service/stovepipe/server:go_default_test --cache_test_results=no
  • make check-gazelle
  • make lint

Revert Plan

  • Revert this PR to stop writing accepted-state logs from Ingest while retaining the materializer for later callers.

Issues

Stack

  1. feat(stovepipe): add request log materializer #657
  2. @ feat(stovepipe): record accepted request state #658

@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-request-history-accepted branch 4 times, most recently from e441df5 to c3257ba Compare September 1, 2026 17:35
@mnoah1
mnoah1 marked this pull request as ready for review September 1, 2026 20:48
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners September 1, 2026 20:48
Base automatically changed from mnoah1/stovepipe-request-history-recorder to main September 2, 2026 18:28
Summary:
Intent:
- Establish every newly admitted request's initial history before dependent processing begins.
- Make an Ingest retry repair a missing accepted entry before republishing work.

Changes:
- Record the durable accepted request through the queue-scoped request log store.
- Stop queue-pointer advancement and process publication when recording fails.
- Wire one recorder instance into Ingest and cover new, duplicate, repair, and failure paths.

This PR builds on #657, which introduces the request state log recorder.

---

<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>
@behinddwalls
behinddwalls force-pushed the mnoah1/stovepipe-request-history-accepted branch from c3257ba to 7ec0802 Compare September 2, 2026 18:28
@mnoah1
mnoah1 added this pull request to the merge queue Sep 2, 2026
Merged via the queue into main with commit 944e26f Sep 2, 2026
15 checks passed
@behinddwalls
behinddwalls deleted the mnoah1/stovepipe-request-history-accepted branch September 2, 2026 18:41
behinddwalls pushed a commit to behinddwalls/submitqueue that referenced this pull request Sep 25, 2026
## Summary
Intent:
- Provide one direct, idempotent materialization path for durable
request state logs.
- Keep the initial rollout limited to state entries while preserving a
boundary for future request summaries and other projections.

Changes:
- Add `Materializer.PersistLog` over the queue-scoped storage aggregate.
- Compose readable stable occurrence IDs with `publish.IntentID`.
- Deduplicate retained occurrences because Stovepipe writes directly;
SubmitQueue instead deduplicates the message carrying a log to its
materializer.
- Preserve caller-supplied timestamps, assign missing timestamps, and
reconcile duplicate writes by retained semantic content.
- Emit bounded metrics with context-derived tags.
- Document how future projections can be added within the materializer
without changing callers.

## Test Plan
- `./tool/bazel test //stovepipe/core/requestlog:go_default_test
--cache_test_results=no`
- `make check-gazelle`
- `make lint`

## Revert Plan
- Revert this PR. No production call site depends on the materializer
until the next PR in the stack lands.

## Issues


## Stack
1. @ uber#657
1. uber#658

This branch was previously deployed

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