docs(handoff): the arc closes — five PRs merged, one regression shipped and fixed, three items left that need your decision - #600
Merged
Conversation
…#80; I shipped a regression in
…not just routed rank 22 — DONE. cli#601 merged (b727a83). The published header-before-message ordering is now pinned TWICE: the sentinel in pkg/civitai/retry_test.go and the exit code in cmd/civitai/read_error_stderr_test.go. Round 0 of the audit ran before the merge decision and found the first guard was one hop short — the requirement of record and the 🔴 bullet are about an `rc`, and nothing composed cap-body + Retry-After -> exitCode(). That is the durable finding: a classification test and an exit-code test are two claims. rank 9 — DONE, and closed in the terms it was stated in. The streak's end was INFERRED from a workflow_dispatch run; it is now OBSERVED in scheduled run 34848144324 (2026-09-14T13:15 UTC): drift=success, 0 failing steps and 15 EXECUTED, notify=success. The step count is the load-bearing half — a run that skipped its steps reports success too. rank 3 — no longer "unrouted". An agent is dispatched against civitai/civitai to fix the Meilisearch-side coercion and open a PR; the brief's constraint is recorded here because it is the easy mistake: a boundary String(...) cast is NOT the fix, since "0222" is already 222 by the time the read path sees it. New rank 25 carries the outcome check so the next session does not re-dispatch it. rank 26 — cli#602's merged-tree re-run is recorded as DELIBERATELY SKIPPED (operator's call), not absent. The mechanical check is posted on that PR. State now: main moved 7467c62 -> 426288f (#601, #596, #603). Flags that this repo has a SECOND live handoff doc maintained by a concurrent session, with its own ranked list — "rank 23 closes" in a commit subject may not mean this doc's. Four new lessons, all from this session's own mistakes: a timed-out mutation battery leaves the mutant in the tree (the restore line is the one that dies); a grep for "the old text is gone" cannot distinguish REMOVED from QUOTED-IN-THE- RETRACTION; `| head` ate grep's exit status again; and the merge drop-check has a premise — it reported 103 "dropped" lines that were this PR's own replacements, because main had not touched that path at all. Doc: 64,635 B of the 65,536 B ceiling. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013JQ4B1VHew33RNX5Ck7ELS
…er, not Meilisearch
The agent dispatched under rank 3 refuted the attribution this doc recorded as
fact. Every MEASUREMENT in that block holds; the mechanism does not.
The Meilisearch index document's user.username never reaches the response —
getImagesFromFeedSearch -> ImagesFeed.populatedQuery builds `user` from the
Postgres-backed userData REDIS cache and spreads it AFTER the doc, overriding it.
The coercion is in event-engine-common/caches/base.ts: a Redis hash stores only
strings, so createCache serialised each field on write and GUESSED the type back
on read — `isNaN(Number(value)) ? value : Number(value)`. Number('0222') is 222.
It also read a stored `false` back as the truthy string 'false'.
The discriminating observation, cache-busted with cf-cache-status MISS on every
row: ?username=0222&limit=11 -> "username":"0222" (Redis MISS, raw Postgres row),
then limit=12..16 -> "username":222 (Redis HIT, decoded). A Meilisearch document
cannot change between two requests seconds apart. The original probe never varied
anything that would make the two mechanisms disagree.
New gotcha, which is the transferable part: `via: code` means "I read code", not
"I read the code that RUNS". That tag made a reading of one file on the path look
like a derivation, and it sat here for three days.
rank 25 now carries the two open fix PRs (civitai#4839 + event-engine-common#13),
their MERGE ORDER (#13 first, then re-pin #4839), that neither has been audited,
and what nobody has verified — nothing was exercised against a real Redis or a
deploy, and `pnpm typecheck` does not cover apps/event-engine.
Also: cli#575 R2/R3/R4 accepted in writing (issue rests on R6 alone; R3's
"points at gatePreSanitised" clause was stale — #578 deleted that state, verified
on main). devdocs#5 merged (23c6d46) after re-verifying its claim live: query=a
totals grow 4 -> 7 -> 10 across pages while the unfiltered listing is a stable
88,901, which is exactly what it documents.
Doc hit its 65,536 B ceiling twice during this edit. Evicted VERBATIM to
claudedocs/refs/: the devdocs#76 resolved block and the devdocs#80 ladder block,
each leaving a headline pointer. Three superseded interim round-0 ledger lines
dropped — the CLOSED line and this session's line both survive. Now 65,036 B.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013JQ4B1VHew33RNX5Ck7ELS
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.
Updates the arc handoff.
main@7467c62,make circ=0 / 22 package lines / 0 FAIL / golangci-lint 0 issues — measured onmainitself, not on a branch.Merged, all verified by content
cli#590— download line-forgery (3 audit rounds)3b222c6cli#591— the 429 exit-code contract (4 rounds; merged by a concurrent session)2c6fc4acli#592·cli#595— handoff, refs demotion, the dispatched-vs-scheduled correctione39250b·e9c51b1cli#585— submit-body ceiling +--allow-oversize61be65ecli#598— restores a regression I shipped in61be65e7467c62devdocs#80— the last two drifts (7 rounds)cced3e2The three lessons worth the doc's space
🔴 A clean merge still drops the other side's edits in regions that never conflicted — it fired three times and shipped once.
#585's merge dropped#591's two Troubleshooting rows ontomain, restoring the exact 🔴 that PR existed to fix while the generated section thirty lines above still said the opposite. The remedy is mechanical: after resolving,diff <(git show origin/main:<file>) <file>and require the "lines main has that we lack" set to be empty. The one drop I caught was caught by exactly that; I had not run it on the first merge. Spot-checking a merge is sampling; the diff is the measurement.🔴 I asserted "nothing unique" about a branch while the
git diff --statI had just printed showed five lines different — and deleted it. The object survived locally and those five lines were the regression fix.🔴 "It reproduces both measured points" is vacuous when the number sits inside the bracket those points define. I published that argument for
MaxSubmitBodyBytesin two surfaces. 10485760 ÷ 4/3 is a 7,864,320-byte zip, inside(2.32 MB, 8.20 MB]— every number in that bracket agrees with both observations. Provenance was the whole argument.Three things need YOUR decision, not more work
civitai/civitai#4768is not blocked, it is UNROUTED. 0 comments since 09-11. Of the objectives named at kickoff, the only one where progress is available and not taken; routing it is outward-facing so I have not.cli#575R2/R3/R4 need a written decision from a named reader, not code. R6 has engineering.developer-docs#5has been open since 2026-07-13. Needs a yes/no.Also newly filed, with closing conditions
cli#593(aclosedLoopbackAddrrace that flakes two positive controls),devdocs#81,devdocs#82. Rank 22 is the one real piece of engineering left:cli#591's header-before-message ordering is a published 🔴 contract that can be inverted with the whole suite green — diagnosed in the doc's investigation block, fix unwritten.⚠ Rank 9 is deliberately still open: the drift streak's end is inferred from a dispatched run. The cron is
37 6 * * *and no scheduled run has fired against the fixed tree yet.