Skip to content

docs(handoff): external issue triage — only 2 of 21 open issues are external, and #545 sat unreviewed - #551

Merged
ZacxDev merged 2 commits into
mainfrom
docs/handoff-external-triage-r2
Sep 11, 2026
Merged

docs(handoff): external issue triage — only 2 of 21 open issues are external, and #545 sat unreviewed#551
ZacxDev merged 2 commits into
mainfrom
docs/handoff-external-triage-r2

Conversation

@ZacxDev

@ZacxDev ZacxDev commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Updates claudedocs/handoff-external-issue-513-numeric-username.md in place (one doc per effort — this doc's stated goal is clearing the externally-reported queue).

What this session did

Triage + dispatch only. No code edits, no commits to main, no merges.

The finding most worth keeping

🔴 #544 and #545 collide across two trackers. Activity-telemetry mention-detected rows for those numbers dated 2026-08-29 → 2026-09-09 are clawgate task ids — the cli issues did not exist until 2026-09-10 16:10Z. A telemetry search for prior work surfaces them and reads as a confident "already handled". It was not. Discriminate by date, not by id.

This lesson was also routed to the activity skill (separate devrc change), since mention-detected had no owning skill and the trap is general: an id is unique only within its own tracker.

In flight at time of writing

Three dispatched agents whose results were not known when this doc was written — a #513 bulk-serializer probe and /audit-pr rounds 0 and 1 on #545. The doc says so explicitly so the next reader collects them rather than inferring from their absence.

Two claim-work claims are held and named in the doc: external-issue-513-numeric-username-3 and cli-545-images-prompt-indent-audit.

Ranked-queue note

Numbering is kept stable (rank is half a claim's slug identity). Items 1–4 keep their previous numbers — rank 1 is marked DONE since #526 merged — and the #545 review is appended as rank 5.

@ZacxDev

ZacxDev commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Pushed c1b0222 — a retraction, which is the point of this update.

The #513 server coercion is not unreproducible. It is live, and it is root-caused.

The prior session concluded "NOT reproducible on any reachable surface." That was wrong, and it is worth being precise about why, because the probe followed the rules and still landed on the opposite of the truth.

Two independent causes, either of which alone would have produced the same empty result:

  1. It never reached an all-digit-username account that had public images (all 7 it found returned items=0).
  2. 🔴 The quoted readings it did get were Cloudflare cache HITs, not origin responses.

That second one is the transferable lesson. The probe read raw bytes, avoided jq, and ran a positive control — everything the rules ask — and a CDN with s-maxage=300 still handed it correct-looking cached copies.

Verified first-hand, not only by the agent

?username=2428023993&limit=3   cf-cache-status: MISS   ->  "username":2428023993   UNQUOTED
?imageId=1446527                                       ->  "username":"2428023993" QUOTED

Same user, same route, different internal path. runImageSearch forks at image-search.service.ts:127: imageId takes the legacy Postgres path, everything else takes the Meilisearch feed path. The Meili index stored user.username with dynamic JSON typing, so an all-digit username is a JSON number in the index document.

On a cache-busted re-sweep the agent measured 51/51 unquoted, 0 quoted — 38 readings that had looked quoted flipped once the cache key changed. The origin coerces 100% of the time.

The part that changes what we shipped

It is a numeric coercion, not just missing quotes:

?imageId=622901         ->  "username":"0222"
?username=0222&limit=4  ->  "username":222      leading zero destroyed
?username=222&limit=4   ->  0 items             the printed name round-trips to nothing

So #532's FlexString does not repair this. It is still correct and still wanted — it stops the decode failing — but it made the failure quieter, not absent: the CLI now prints a wrong username that looks right. A decode fix cannot recover information the wire already lost.

Added as rank 7: check whether AGENTS.md item 37 / claudedocs/decisions/37-numeric-username.md asserts the coercion was unreproducible, since that is now false.

Also folded in

The triage ratio from the replaced status block was carried into Gotchas rather than dropped, per the durable-line warning.

@ZacxDev
ZacxDev merged commit 5208a6b into main Sep 11, 2026
13 checks passed
@ZacxDev
ZacxDev deleted the docs/handoff-external-triage-r2 branch September 11, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant