feat(ops): restructure the weekly digest around three production windows - #1958
Merged
Merged
Conversation
The weekly performance digest drops its Health questions and Analytics state blocks — the boards are read on the website, and the health bullets restated the production section — and reports production over three windows instead: the week, the trailing month, and the October Term to date. Each block is one shape (cells, events, measured spend, role x stage table) so the three are read the same way. The month block's window is the ex-post spend backstop's own, taken from its config, and the backstop's verdict closes that block: the verdict and the census printed beside it can then never describe different periods. The Term block closes with the forward cells scored under the process in force — a forward cell is minted once at its event and never again, so the Term is the period that count is worth reading over — stated as a figure, with the frozen-shakedown state named rather than shown as a bare zero. `cell_census` and `spend_over` take a `since` cutoff so the Term window can be pinned to the instant its Term opened: an October Term opens at midnight on 1 October and the digest renders mid-morning, so a day count would cut the Term's own first morning out of its own census. Artifact: the `weekly-digest` issue run-ops opens on the Monday tick. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The weekly performance digest now reads: produced this week, produced this month (the spend backstop's own trailing window, closing with its verdict), produced this term (from the Term's 1 October, pinned to that instant rather than counted back in days, closing with the forward cells scored under the process in force, stated as a ledger-to-date figure), then the back-test results unchanged. The health questions and the analytics-state block are gone: the boards are read on the site, and the health bullets restated the production block. The ops report, the daily digest and every process-digest input are untouched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
The weekly performance digest reorganised around what was produced, over three windows, with the boards left to the website.
What changed
The digest's blocks are now, in order:
usage.jsonrecords, the role × stage table. The spend-backstop paragraph no longer closes it.spend.window_daysinconfig/tracking.yaml, 30 today), so the census and the verdict beside it are one window over one walk of the ledger; the backstop paragraph closes this block.october_term_year), pinned to that midnight rather than counted back in days so the Term's first morning is never dropped; closes withForward cells scored (<scope>, ledger to date): …, the frozen-process figure that used to be a health question, with the shakedown state still named when the frozen scope has nothing scored in either stratum.The Health questions and Analytics state blocks are removed, with the helpers only they used.
WeeklyAnalyticsnow carries only the three back-test artifacts and the scorer in force, so the digest no longer loads the leaderboard, claim-scores, big-cases or statpack files.cell_censusandspend_overgained an optionalsinceinstant. The daily ops report (render_markdown) is byte-unchanged.Docs:
docs/pipeline.md(the block list and the vintage rule, now scoped to the back-test block),docs/cli.md,README.md, theops-reportdocstring (which also named a flag that does not exist), and two comment lines inrun-ops.yml(the header's block list, and a stale claim that the digest carried a stale-label signal; one comment also named aWEEKLY_TICKenv that no step sets).Example, rendered over the committed ledger
Executed checks
uv run fedcourts ops-report --digest-out digest.md --generated-at 2026-09-21T08:30:00+00:00renders the above; the month block and the backstop line read the same 476 cells and $1,170.33 by construction, and a test now pins that equality on a ledger with rows inside and outside the window.since 2026-10-01, a 0-day window that keeps the post-midnight cell and drops the 23:00 one from the night before.scripts/gate.shlint, types, test (4970 passed, 2 pre-existing skips), schemas (no drift; no pydantic model moved), data — all pass.uv run fedcourts process-digest --allbyte-identical toorigin/staging.Review
code-reviewer(no blockers; five recommendations, all taken: the ledger-to-date denominator on the rendered line, the docstring synced to the docs, the defusing test re-pointed at the back-test predictor ids since the census labels are enum-valued, the month-equals-backstop assertion, the 1 October parametrize row) anddocs-reviewer(one blocker, README's block list, fixed; theops-reportdocstring, the two workflow comments and_sourced's rationale also fixed). Not taken: making the window bounds required onProducedWindow(the fallback is test-only; left for a later tidy).Touches
.github/workflows/run-ops.yml(comments only): waits for the maintainer, per the golden rules. Effect check for the promotion body: the next Monday digest (2026-09-28) opens with## Produced this weekas its first block and carries## Produced this monthand## Produced this term (OT2025, …)before## Backtest results, with no## Health questionsor## Analytics state.🤖 Generated with Claude Code