Uh oh!
There was an error while loading. Please reload this page.
release-train: develop -> staging - #206
Merged
Merged
Conversation
…, exempt elsewhere (#202) Now that the version-bump-gate callers are merged into the 5 version-published repos (data-ingestors, tracebloc-py-package, cli, design-system, client), add the reusable to the inventory so caller-drift enforces it: required on those 5, exempt (no version_file → gate N/A) on the rest. Closes the enrollment gap that let cli + py-package hit the version refusal only at the prod boundary (backend#1563). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
`scripts/__pycache__/standards-sync.cpython-314.pyc` was committed by a `git add -A` in #200 and reached `develop`. It is now riding the develop -> staging promotion in .github#203, which is how I noticed it. It is a build artifact and does not belong in the tree: version- and platform-specific (cpython-314, while CI runs 3.12), regenerated on every local run of the selftest, and a stale one silently shadows the source it was built from. Added a .gitignore covering the whole class rather than the one file that got caught -- `__pycache__/`, `*.py[cod]`, plus .DS_Store and .pytest_cache, which the same careless `add -A` would sweep in next. The file is also present on the #197 branch, which branched after #200; removed there too, so whichever lands first the artifact is gone and the other cannot reintroduce it. Selftest still passes (20 checks on this branch; #197 takes it to 27). Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…tes (backend#1602) (#197) * fix(standards): retry fresh-branch reads; refresh sha on rejected writes (backend#1602) Design rule 5: fresh refs are eventually consistent. On run 31373298821 (frontend-app leg) the contents read on a just-created branch transiently 404'd, the 404 was believed, and the sha-less PUT was rejected as 'Invalid request' — one flaky read failed a fleet run. remediate() now knows whether the base has the file: reads the base proves must succeed retry with backoff and fail closed if they never do; genuine absence is confirmed by a re-read; a 409/422-rejected write refreshes the sha and retries exactly once. Five new offline selftest checks pin the contract with a scripted gh stub (25 checks total). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(standards): a reused sync branch may honestly 404, and say so on a real conflict Two Bugbot findings on #197. 1. `expect_file` MEANS "a 404 here cannot be true" -- which holds only when the ref was cut moments ago from a base that has the file. That is the eventual consistency window the retry exists for. A REUSED branch (the 422 path) is a different situation: it may have been cut BEFORE CLAUDE.md existed on the base, so a 404 is honest and permanent. Passing file_on_base alone made the read retry five times and fail closed, so the sha-less create could never run and that repo was stuck forever. The old code read the 404 as absence and created the file, which was right here. expect_file is now `file_on_base and branch_is_fresh`. 2. The second-rejection message was UNREACHABLE. On attempt 2 the flow fell through to the generic return inside the loop, so the one failure worth distinguishing -- refreshed the sha and was rejected anyway, i.e. another writer is racing the branch -- was the one nobody could see. It now returns its own message, and the post-loop return is documented as a fail-closed backstop rather than dead code that would return None (i.e. SUCCESS). Selftest 25 -> 27. Mutation-verified both: reverting expect_file, and making the second-rejection branch unreachable again -- both CAUGHT. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * test(standards): the reused-branch check asserted an end state and proved nothing Mutation-checking the previous commit caught its own test. Reverting the expect_file fix left the selftest GREEN, because the check asserted only "the file got created". With the bug present the read retries, swallows the scripted PUT response, reads its `{}` body as the file, and the run reaches the same end state by a different path. Same outcome, wrong reason -- so the check could not distinguish fixed from broken, in either direction. Assert the READ COUNT instead: 2 when a 404 on a reused branch is believed as absence, 5 when it is wrongly treated as the eventual consistency window. That is the thing the fix actually changes. Also catches the stub's exhaustion assertion and records it as a failure rather than letting it abort the whole selftest. Re-verified: reverting expect_file is now CAUGHT (reads=3, expected 2). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * chore: drop the committed .pyc here too (backend#1602) Same artifact as .github#204, removed on this branch as well. This branch was cut after #200, so it carries the file; without this, merging #197 after #204 would put it straight back and the fix would look like it had held. The .gitignore is identical to #204's, so whichever merges first the other resolves cleanly. Selftest: 27 checks, 0 failed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* docs(claude): sync org-standards block (backend#1602) Managed sync from tracebloc/.github/org-standards.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(claude): sync org-standards block (backend#1602) Managed sync from tracebloc/.github/org-standards.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
LukasWodka
commented
Aug 11, 2026
ContributorAuthor
bugbot run |
Uh oh!
There was an error while loading. Please reload this page.
…fast-lane (#208) Saqlain (client-runtime#301): the new bug rule sends defects straight into Ready unrefined, but the next line still called Ready 'the refined queue' flatly, so a reader landing there assumes everything in Ready is refined. Qualify it with the bug exception. Source fix per our own rule (managed block — never hand-edit the synced copies); the standards-sync re-propagates to every repo's CLAUDE.md. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
LukasWodka
commented
Aug 11, 2026
ContributorAuthor
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e413018. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Automated promotion by the release train (RFC-0008 D14). Head is the train-managed
release-train/to-stagingbranch (a mirror ofdevelop), so it never collides with a human PR. Merged only when the fr-gate is green.Note
Medium Risk
Changes tighten org-wide CI inventory (version-bump gate) and fleet
CLAUDE.mdsync behavior; misconfiguration could block promotions or stall sync PRs, but no application runtime or auth paths are touched.Overview
This promotion bundles org governance and automation fixes in tracebloc/.github.
Org standards & kanban prose —
org-standards.md(and the syncedCLAUDE.mdblock) now require every board ticket to have aStatus, route bugs straight toReady, and clarify thatReadyis the default pull queue (bugs excepted).Caller-drift contract —
repo-inventory.ymlregistersversion-bump-gate.ymlas a reusable and assignsrequiredon the five version-published repos (cli,client,data-ingestors,design-system,tracebloc-py-package); everyone else gets a writtenversion_gate_not_applicableexemption.Standards-sync remediation —
standards-sync.pyadds design rule 5 (fresh-ref eventual consistency): retried reads on new sync branches, sha refresh + one retry on failed writes, andexpect_fileonly when the sync branch was just created so reused branches can still createCLAUDE.mdwhen missing (#197). Selftests cover the race and reused-branch paths.Hygiene — New
.gitignorefor__pycache__,*.pyc,.pytest_cache, and.DS_Storeafter a committed bytecode artifact slipped through a promotion.Reviewed by Cursor Bugbot for commit e413018. Bugbot is set up for automated code reviews on this repo. Configure here.