docs: add capabilities query recipes - #104
Conversation
Help people and automation query the same embedded support matrix that generates the documentation, without scraping Markdown or connecting to a database.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
🤖 1/2 — the recipes. Where they came from, the rollout marker, and the README claims are in 2/2. Reviewed All three work, and they are better defended than they look.
Recipe 3 leans on a jq subtlety that happens to be right: Mutation testing — I went looking for a rename that breaks a recipe with the suite still green, and did not find one:
Every field path and literal these recipes hard-code is anchored somewhere: the contract's example row ( 1. Recipe 2 does not distinguish the declarative door, and reads as though it does
That makes the recipe correct and its comment — "Everything the declarative door refuses" — misleading in a specific way. A consumer reaching for a per-door query is reaching for the one thing the schema models and the data does not yet exercise, and running it will not tell them: the answer looks door-specific because the question was. Two of the three recipes also collapse to the same partition, so the set teaches less than it appears to. A clause fixes it — note that the doors agree on every row today and the map exists so they can diverge. Better, swap in a query a tier filter cannot express: 2. Recipe 3's set has a sharper definition than "owned by another tool class"The field is not conventionally tied to ownership — The consequence a reader hits: it returns 14 of the 16 T3 rows. The two it omits — 3. No recipe answers the question a consumer actually arrives withAll three filter by attribute; none looks up a single change. Is this operation supported today? is the question the page exists for, and This is not just my preference — the source these recipes come from says so. This review was generated by Claude Code (claude-opus-5). |
|
🤖 2/2 — provenance, the rollout marker, and the surrounding claims. The recipes themselves are in 1/2. 1. The recipe block is a byte-identical copy of the contract's, and now nothing keeps the two in step
That is a defensible thing to do, since the two blocks answer different questions: in the contract they are a requirement on the schema, written at design time to say what the JSON must be able to express; on the capabilities page they are consumer documentation. Same text, different force. But the copy creates a second hand-maintained statement of the same thing in the one repo whose entire thesis is that there must not be one — the sentence directly under the rollout list ( Three ways out, in increasing cost:
Whichever, the copy dropped the two sentences around the block that consumers need most and the contract audience needs least: 2. Step 4 is marked done while step 3 is still pending, under a sentence calling the list an order
Step 3 is #100, still open. So the first time the per-step marker convention carries real information, it records the order being skipped — and the step skipped is the convention's own PR. Small edit either way, but the two fixes mean different things:
I lean to the second: nothing about the recipes depends on the gate existing, and a reader seeing 4 done before 3 will otherwise assume the marker is stale rather than accurate. 3. The page survives regeneration, which is the check this PR needed most
Placing the section above 4. The README claims check out, including the one easiest to get wrong
Approving. Everything here is accurate, and the regeneration and offline claims both survive testing. Finding 1 above is the one I would act on — a pinning test is the small version of it — with finding 1 in 1/2 next. This review was generated by Claude Code (claude-opus-5). |
aparajon
left a comment
There was a problem hiding this comment.
🤖 Approving on dd67034e. I built the binary and ran all three recipes against the real embedded matrix — they work, and three mutations to the JSON contract underneath them were each caught by #99's existing tests, so the recipes inherit real protection rather than needing their own. The generator leaves the tree clean with the new section in place, and the none connection claim holds with the environment scrubbed.
Two things to act on: the block is a byte-identical copy of the contract's own recipe list (capabilities-contract.md:177-186) with no gate keeping them in step — a pinning test is the small version of the fix — and the copy dropped the "select by fields or id, not array position" guidance that consumers need most. Details in the two comments.
This stamp was left by Claude Code (claude-opus-5).
Clarify that only marker-delimited support tables are generated from the YAML source of truth. Keep operator jq recipes in the capabilities guide and link to them from the contract doc.
The Query-the-matrix recipes selected by tier, by one door's disposition, and by owning tool class, but each was either redundant with a tier filter or silently incomplete. Add a lookup by id (the first thing a consumer asks) and a filter by engine_path (a roadmap cut no tier filter can express). Note that both doors carry the same disposition on every row today, so the door filter is a hook for future divergence, not a way to find differences. Note that the owning-tool-class filter returns only the white and blue rows: the red rows name no owner because PostgreSQL has no online mechanism for them, so the filter is not the full out-of-scope set. Carry the contract's "select by fields or id, never by array position" rule onto the operator page next to the recipes, so the guidance travels with the commands it governs. The contract's summary of the recipe kinds now lists id lookup and engine path too. The contract's step list said "implementation order", but the recipes never depended on the CI gate: reword the lead-in so only the first step is a prerequisite and the rest land independently, which is what the done/pending marks already show. 🤖 Generated with Amp (Claude Opus 4.6)
|
🤖 Adversarial review response — created by Kiran's code review agent (Amp, Claude Opus 4.6) — block/pg-sprite pull/104, follow-up commit Verdict: all three recipe findings and both actionable provenance findings are fixed; each recipe comment now states what the binary actually returns, checked against
Verification: Source: block/pg-sprite#104, review comments 5628073553 and 5628074103 and review 5174116303 at head |
Document how people and automation can query the embedded capabilities matrix and route its results with
jq.Why
The support page explains the matrix, but consumers cannot discover the matching CLI JSON contract or ready-to-use filters from that page or the README.
What
capabilitiescommand.Before / after