This repository was archived by the owner on Sep 17, 2026. It is now read-only.
Repository navigation
Open every PR with which checks are safe to merge without - #22
Merged
Merged
Conversation
Nothing is path-filtered, on purpose, and itest alone is ~23 minutes, so a Markdown-only pull request costs a full run before anyone can merge it. Until real filtering is designed, each PR body opens with a block naming the checks a reviewer can skip and why, refreshed on every push. It is manual on purpose, and it avoids both faults the automatic version has: a paths: list goes stale silently when a module gains a dependency, and a path-filtered job reports *skipped*, which never satisfies a required status check. A sentence written per push cannot go stale, and it can say things no filter can express -- "this already passed on <sha> and nothing under .github/ has changed since" is not a path pattern. The section says to derive the claim rather than assert it, and names how per change shape, because the closure here is not obvious: ingot -> indexing-service and delegator -> forgectl were both invisible in go.mod and only appeared under go list -deps. It also requires the block to state what it costs when wrong -- the checks still run, so an ignored check that goes red leaves main red, and the reviewer is the one taking that trade. The blocks are kept rather than discarded: when real filtering is designed they are the worked examples of what it has to express, and the ones that turned out wrong are worth more than the ones that did not. Listed in the scaffolding section among the things a finished monorepo should drop. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
Petra's idea: since nothing is required yet, say per PR which checks a reviewer can merge without waiting for, with reasoning a paths: filter could not express. It is the interim for the path-filtering question and avoids both of that question's faults -- a list that goes stale silently, and skipped jobs that never satisfy a required check. Two conditions make it real rather than comfortable: derive the claim (the closure is not obvious, which is why CI is unfiltered at all), and state what it costs when wrong (the checks still run, so an ignored red leaves main red). The blocks are kept as the worked examples that design the real filtering later. #22 puts it in AGENTS.md. Also: #19 is green, #21 is at e020534. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
The page said "itest ingot is sharded" as of the last commit, which stopped being true at 16:21Z. Fixed everywhere: the open-PR tables are #19 and #22, the second outstanding check-name change is off the table, and the debt entry now leads with ~30 minutes unsharded as a measured choice rather than an unexamined one. The measurement is kept in full, because every remaining option is judged against it and because reviving the branch is a reopen rather than a rebuild -- claude/shard-itest survives at e020534, and the branch list now says explicitly not to delete it. Flagged: the two levers that need no sharding -- the missing buildx layer cache in itest/e2e, and the self-imposed 3s lockWaitTime in our versitygw fork -- were born on the closed branch and exist nowhere on main. They are the live work now. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
TestUploadAndRetrieve/filesystem has failed 2 of 40 e2e runs, and both are the same shape: compose up reports a dependency unhealthy, a different container each time (upload-1 on run 160, plc-1 on run 182), always the filesystem permutation and never s3. plc-1's log says connect ECONNREFUSED to its postgres, one restart, then the healthcheck deadline. That is a startup race, not a broken image. Run 160 is on main at ff2f794, two and a half hours before any of today's branches existed, which is what rules #25 out -- it changes how images are built, so the red looked exactly like a regression until the main failure was found. The two permutations are t.Parallel(), so ~40 containers start on one runner at once; both observed failures being filesystem is suggestive of something systematic, but two data points is not proof. One re-run queued on #25, the single re-run allowed for establishing that a failure is not the PR's. The honest fix is compose healthcheck ordering, not a retry. Also: main is 144b316 -- Petra merged #22, #23 and #24 while this was running. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
Petra merged #20, #17, #22, #19, #23 and #24; main is 144b316 and the open list is #25 and #26. Dropped the merged rows from both tables rather than letting them accumulate. #25's e2e red turned out to be the pre-existing filesystem flake, and the one re-run that cleared it was warm -- so it produced the measurement as well as the green: 8 images in 23s against a 7m34s baseline, and the e2e job from 13m10s to 5m29s. #26 puts that in MONOREPO_TODO.md with the caveats attached rather than the headline alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Your idea, written down so it survives this session. One file, based on
main, stacked on nothing.The problem it addresses
Nothing is path-filtered, on purpose, and
itestalone is ~23 minutes. So a Markdown-only pull request — which most of the recent ones have been — costs a full run before anyone can merge it. #8 changed one Markdown file and still costitest26m27s.Why manual beats the automatic version, for now
MONOREPO_TODO.mdrecords the two faults real path filtering has here, and a per-PR block has neither:paths:filterAnd it can say things no path pattern can express. The block on #21 right now says "
itestalready passed onf4c5c21fandgit diff f4c5c21f HEAD -- .github/is empty" — that is not a path, it is a fact about two shas.The part that matters: derive, don't assert
The section names how, per change shape — Markdown only, one workflow's own YAML, Go code (
go list -deps), already-green-at-an-earlier-head — because the closure here is not obvious, which is the entire reason CI is unfiltered.ingot → indexing-serviceanddelegator → forgectlwere both invisible ingo.modand only appeared undergo list -deps(rule 3). A hand-waved "this can't affect anything" is how that gets missed.It also requires the block to state what it costs when wrong. The checks still run; skipping the wait means an ignored check that goes red leaves
mainred. The reviewer is the one taking that trade and should be able to see it.The blocks are kept, not discarded
When real filtering is designed, they are the worked examples of what it has to be able to express — and the ones that turned out wrong are worth more than the ones that didn't. That is the cheapest way to get evidence for a design nobody can currently specify.
Listed in the scaffolding section among the things a finished monorepo should drop, since it is explicitly an interim.
Worth your eye
This is a process proposal, like #20 — it changes how pull requests are written, not what the code does. Two things I'd look at: whether "derive, don't assert" is stated strongly enough to actually bind, and whether the four change-shapes cover the cases you expect (a Dockerfile-only change and a
go.modbump are both absent, deliberately — I did not want to guess at shapes I have not had to reason about yet).🤖 Generated with Claude Code
https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Generated by Claude Code