Skip to content

docs(rfc): stovepipe record step design - #394

Open
mnoah1 wants to merge 2 commits into
mainfrom
mnoah1/record-step
Open

docs(rfc): stovepipe record step design#394
mnoah1 wants to merge 2 commits into
mainfrom
mnoah1/record-step

Conversation

@mnoah1

@mnoah1mnoah1 commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Design proposal for the record step outlined in stovepipe's workflow.md

@mnoah1
mnoah1 marked this pull request as ready for review July 16, 2026 19:33
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code ownersJuly 16, 2026 19:33
Comment threaddoc/rfc/stovepipe/steps/record.md Outdated
Comment threaddoc/rfc/stovepipe/steps/record.md Outdated
Comment threaddoc/rfc/stovepipe/steps/record.md Outdated
@mnoah1
mnoah1force-pushed the mnoah1/record-step branch from 5b12645 to 4dc7628CompareAugust 4, 2026 20:13
@mnoah1
mnoah1force-pushed the mnoah1/record-step branch from 4dc7628 to 7b28df2CompareAugust 4, 2026 20:22
| `Project` | Empty for the whole repository; stable project id for Phase 2 |
| `Degree` | Health degree in the closed interval `[0, 1]`; `0` is green and `1` is fully broken |
| `RequestID` | Request that established the fact |
| `CreatedAt` | Millisecond timestamp at which the fact was first recorded |

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thoughts on timestamp? We don't track timestamps elsewhere in the system but for these more long-term persisted facts, do we want to maintain some kind of timestamped history?


A fact is written only when the request reaches a `succeeded` or `failed` verdict. A `cancelled` build is acked with no fact recorded. Callers gating deployments treat an absent fact as not green.

The fail-closed path also produces no fact, as the DLQ reconciler forces `failed` and never publishes to `record`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think never publishes to record holds when the fail-close originates in build_dlq. if build ack keeps failing, once retry_count hits MaxAttempts, the subscriber itself moves it to the DLQ, leaving one or more live poll chains behind in buildsignal step, and publishRecord fires anyway, record then writes a degree-1 fact regardless of the build result.

Sign up for freeto 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.

3 participants

@mnoah1@behinddwalls@roychying