Repository navigation
chore: batch buglog entries for the 2026-08-28 merges - #1342
Merged
Merged
Conversation
Collects the buglog entries carried in the bodies of 21 merged pull requests into .wolf/buglog.jsonl on main, per the openwolf protocol that forbids appending to this file on a fix branch (issue #873). Source pull requests: 1240, 1251, 1253, 1257, 1268, 1276, 1277, 1278, 1281, 1287, 1292, 1293, 1294, 1296, 1300, 1301, 1303, 1305, 1313, 1335, 1337. 36 entries appended. Two were dropped as duplicates or superseded versions, and three were corrected against what actually merged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WyEwUxZCArdn1ZUDkTvuQ1
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reachedNext included review available in 44 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
4 of 5 tasks
sakibsadmanshajib
added a commit
that referenced
this pull request
Aug 29, 2026
## Summary This is the batched buglog follow-up for the pull requests merged to `main` on 2026-08-29. Its diff is `.wolf/buglog.jsonl` and nothing else. Per `.claude/rules/openwolf.md`, every fixed bug, error, failed test or failed build must be logged, but the line may never be appended on a fix branch. `merge=union` in `.gitattributes` resolves concurrent appends locally and is ignored by GitHub's server side merge, so two branches that both appended land in hard conflict there. An unmergeable pull request gets no `refs/pull/N/merge`, no `pull_request` run and therefore zero checks, and the required status gate then blocks the merge for a reason the page never states (issue #873). Each fix accordingly carried its entry in its own pull request body, and this pull request copies them onto `main` in one batch, which the protocol explicitly prefers over one pull request per entry. ## Scope examined Fifty nine pull requests merged to `main` on 2026-08-29. Forty eight of them carried at least one entry, for eighty two entries in total. Thirty two of those were already on `main` and are skipped, leaving fifty appended here from thirty four pull requests. The largest block of skips comes from #1342, the equivalent batch for the 2026-08-28 merges, which merged earlier the same day and already landed thirty six entries covering #1257, #1268, #1276, #1277, #1287, #1292, #1293, #1294, #1296, #1301, #1303, #1305, #1313, #1335 and #1337. ## What landed Fifty entries appended, one JSON object per line, append only. The 232 pre-existing lines are byte identical to `origin/main` (verified by hashing the first 232 lines of the result against the base file). Every line in the resulting file parses as JSON and carries `error_message`, `root_cause`, `fix` and `tags`. | Source | Entries | |---|---| | #1083 | 2 | | #1277 | 1 | | #1278 | 1 | | #1298 | 1 | | #1334 | 1 | | #1336 | 3 | | #1343 | 1 | | #1346 | 1 | | #1351 | 1 | | #1365 | 2 | | #1368 | 1 | | #1369 | 1 | | #1371 | 3 | | #1375 | 3 | | #1376 | 1 | | #1378 | 1 | | #1379 | 2 | | #1388 | 5 | | #1389 | 3 | | #1390 | 2 | | #1393 | 1 | | #1394 | 1 | | #1410 | 1 | | #1417 | 1 | | #1421 | 1 | | #1423 | 1 | | #1424 | 1 | | #1426 | 1 | | #1429 | 1 | | #1431 | 1 | | #1433 | 1 | | #1434 | 1 | | #1436 | 1 | | #1439 | 1 | Entries are copied verbatim from their source pull request bodies. Nothing was rewritten, no field was invented, and no field was added. No JSON needed repair: all eighty two extracted entries parsed on the first attempt and all four required fields were present on every one. ## Merged pull requests that carried no entry Eleven of the fifty nine. Recorded here because the gap is itself the useful signal. | Pull request | Title | Assessment | |---|---|---| | #1013 | chore(deps): bump the go-minor-patch group across 1 directory with 4 updates | Dependabot bump, no defect fixed, no entry expected | | #1015 | chore(deps): bump the go-minor-patch group across 1 directory with 6 updates | Dependabot bump, no entry expected | | #1016 | chore(deps): bump golang from 1.26-alpine to 1.27-alpine in /deploy/docker | Dependabot bump, no entry expected | | #1218 | chore(deps): bump postcss from 8.5.19 to 8.5.26 in /apps/desktop | Dependabot bump, no entry expected | | #1219 | chore(deps): bump golang.org/x/crypto from 0.41.0 to 0.52.0 in /apps/control-plane | Dependabot bump, no entry expected | | #1342 | chore: batch buglog entries for the 2026-08-28 merges | The previous batch pull request itself, correctly carries no entry of its own | | #1364 | chore: remove four dead skills and record the patterns that cost time | Protocol gap. The body records patterns that cost time, which is the shape of a buglog entry, but none was written as one | | #1383 | test: retire stale expected-failure markers, restore the ones that are true (#1381, #1382, #1324) | Protocol gap. Stale `it.fails` markers reading as red is a real defect that was fixed here and should have carried an entry | | #1384 | docs: correct D-047, hive-auto reverted to variable pricing (D-059) | Decision ledger correction, arguably a documentation defect, no entry written | | #1387 | chore(deps): bump next from 15.5.23 to 16.3.3 in /apps/agent-console | Dependabot bump, no entry expected | | #1398 | docs: rescue the 2026-08-25 parity captures and add the 2026-08-29 QA matrix evidence | Documentation and evidence rescue, no entry written | Six of the eleven are Dependabot bumps and one is the previous batch, so the genuine protocol gaps are #1364, #1383, #1384 and #1398. Of those, #1383 is the one worth a follow-up: it fixed a real defect class (a stale expected-failure marker reads as a red "Expect test to fail" and gets dismissed as pre-existing) and left no record. ## Entries skipped as already present Thirty two. Thirty of them matched an entry already on `main` on `error_message`, `id` or `fix`. Two more from #1278 are semantic duplicates that an exact match would have missed, and were skipped after reading the landed entries they duplicate: - #1278's `streaming content_block_start omits text field` entry is covered by the consolidated `bug-2026-08-28-anthropic-sdk-wire-conformance` entry landed from #1296, whose root cause names the same `omitempty` on `StreamContentBlock.Text`. - #1278's `GET /v1/models leaked an upstream provider name` entry is covered by `BUG-1284`, landed from #1300, which names the same `public.model_aliases.summary` publication path. #1278's third entry, on `top_k` forwarding producing a 400, is not covered anywhere on `main` and is appended here. #1342 recorded #1278 as fully "merged into #1296", which was accurate for two of its three entries. ## Note on entry quality One appended entry is thin: #1277's parity re-score record carries `error_message` of `n/a` and a root cause of "console had no privacy/data-policy surface at all". It is a parity gap record rather than a defect record. It is included exactly as written rather than embellished, per the protocol's preference for the author's own words. ## Test plan - [x] Branch cut fresh from `origin/main`, diff is `.wolf/buglog.jsonl` and nothing else - [x] First 232 lines byte identical to the base file (md5 match) - [x] All 282 resulting lines parse as JSON and carry `error_message`, `root_cause`, `fix` and `tags` - [x] No `.wolf/` telemetry (`anatomy.md`, `memory.md`, `token-ledger.json`, `hooks/_session.json`, `buglog.json`) in the commit - [ ] The six required checks report green via the inert path allowlist in `.github/workflows/ci.yml` --------- Co-authored-by: Claude Opus 5 <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.
Summary
This is the batched buglog follow-up for the 21 pull requests merged during the 2026-08-28 session. Its diff is
.wolf/buglog.jsonland nothing else.Per
.claude/rules/openwolf.md, every fixed bug, error, failed test or failed build must be logged, but the line may never be appended on a fix branch:merge=unionin.gitattributesresolves concurrent appends locally and is ignored by GitHub's server side merge, so two branches that both appended land in hard conflict there. An unmergeable pull request gets norefs/pull/N/merge, nopull_requestrun and therefore zero checks, and the required status gate then blocks the merge for a reason the page never states (issue #873). Each fix accordingly carried its entry in its own pull request body, and this pull request copies them ontomainin one batch, which the protocol explicitly prefers over one pull request per entry.Source pull requests
1240, 1251, 1253, 1257, 1268, 1276, 1277, 1278, 1281, 1287, 1292, 1293, 1294, 1296, 1300, 1301, 1303, 1305, 1313, 1335, 1337. All merged.
Every entry came from a "Buglog entry" heading in one of those bodies. Nothing was invented for a pull request that carried none.
What landed
36 entries appended, one JSON object per line, append only. The 196 pre-existing lines are byte identical to
origin/main.Note on #1268: its first "Buglog entry" heading says "None yet" in prose and carries no JSON. Its two later headings, from the CI live lane and from the intermittent tool call failure, carry the five entries taken here.
Deduplication
omitemptyonStreamContentBlock.Textdropped the required"text":""from every textcontent_block_start, crashing the real Anthropic SDK's stream accumulator (issue Streaming content_block_start omits text field, crashing the real Anthropic SDK's stream accumulator on every text response #1274). test: add Anthropic Messages API conformance suite using the real SDK #1278 is the conformance suite that found it and shipped it marked xfail; fix: make the Anthropic surface conform to the real SDK wire contract (#1274, #1260, #1261, #1259) #1296 is the fix, and its entry carries the fuller root cause and the actual remedy. One bug, one entry. fix: make the Anthropic surface conform to the real SDK wire contract (#1274, #1260, #1261, #1259) #1296's entry gains adiscovered_byfield naming test: add Anthropic Messages API conformance suite using the real SDK #1278 so the discovery is not lost.decision-citation-check.jsandsecrets-scanner.js) blind to the same MultiEdit payload shape, fixed in two different pull requests, so two entries. fix: log account_not_provisioned at its single choke point #1240 and fix: refuse an API key for a workspace with no billing account (#1330) #1335 are two differentaccount_not_provisioneddefects, one an observability gap at the edge boundary and one a console mint that should have refused, so two entries. fix: enforce max_tokens as a billing bound and refuse n other than 1 #1305's three entries are three separate rounds of defects in the same money path change, each with its own root cause.Corrections against what actually merged
Each entry was checked against the merged tree at
origin/main, not against its own claim.AuthSnapshot.TenantUUID. Onmainthe check is the exportedauthz.ParseTenantID(TenantLookup)thatTenantUUIDdelegates to, which the images and audio routing adapters (two further silent call sites found in the same review) also call, andkey_idis deliberately not logged because CodeQL's clear text logging check flags any field named*Key*(alert Feature: Add OpenRouter AI Provider Integration - Phase 1 Foundation #31). Thefixfield now says so.app/console/analytics/page.tsxas the home of the five fetch helpers and theirPromise.all. Onmainthey live inapps/web-console/lib/analytics/overview-fetch.ts, extracted during review. Path corrected.error_messagewas the placeholdern/a. Reconstructed from the pull request's own correction narrative: the page as first written published a blanket no content stored claim false for/v1/batches,/v1/filesand/v1/rag, a product wide provider blindness claim disproved by catalogue summaries that name vendors (GET /v1/models leaks provider identity in hive-stt/hive-tts descriptions #1284), a metering claim anchored to the console sideUsageEventRowprojection rather than theusage_eventstable, and a 1:1 alias to route claim that is a property of seed data rather than ofSelectRoute.#1303 needed no correction. Its original root cause asserted a live mid stream provider leak on the session chat relay that measurement disproved, and the author had already corrected the body before merge. The corrected version is what was taken, including the sentence recording that the session chat relay did not leak an error frame but silently truncated instead.
Every other entry's central claim was verified present in the merged tree, among them
metering.SupportsIncludeUsage,sanitize.VariablePriceFramein the batch dispatcher, the revoke and regrant in20260828_01_service_role_public_schema_grant.sqlwith theanonassertions inci-throwaway-db.sh,normalizeReasoningUsagenow called fromnormalizeChatCompletion,signup.SyncTenantMembershipRole,TestKeyViewHidesALimitThatIsNotEnforced,TestListEventsLatencyCrossesTheWire,mask-api-keys.mjsandmd-table.mjs,StreamContentBlock.Textas*string,redactSnapshot,httpx.ReadBody,sanitize.ReplaceErrorFramewith the default deny tail inprovider_blind.go,pinCompletionCeilingandcaptureInputTokenswithapplyReasoningHeadroomgone,requireBillingTenant, andhooks.selfcheck.jswired into the Repo policy lints check.Verification
node .wolf/hooks/bugstore.selfcheck.jsreportsbugstore selfcheck OK.error_message,root_cause,fixandtags.hk_occurrences are prefix descriptions in prose, not keys.git diff origin/main...HEAD --name-onlyprints.wolf/buglog.jsonland nothing else. No.wolf/telemetry was staged.Review
No adversarial review streams were run, deliberately. This change is records only: it adds no code, no test, no configuration and no behavior, and
.wolf/buglog.jsonlis on the inert path allowlist in.github/workflows/ci.yml, so the six required checks report green without running their heavy steps. If a check does fail here, that is a real signal about the file rather than about the pipeline.https://claude.ai/code/session_01WyEwUxZCArdn1ZUDkTvuQ1