Catalog refresh v0.38.0: Nextdoor arrives, four bulk-lane flags and five SKUs leave - #34
Merged
Conversation
Regenerated against the live gateway (366 run paths, 366 catalog entries). regen.yml has classified blocked and failed on every dispatch since 2026-09-07T01:26Z, so npm and PyPI have been serving a stale catalog at v0.37.2 while five gateway PRs shipped. All 14 removals trace to deliberate merged gateway PRs: anyapi#1086 instagram/twitter follow-graph requireCursor, requireSinglePage anyapi#1093 instagram.followers/following input.limit anyapi#1059 upwork.jobs fixedPriceRange, hourlyRateRange anyapi#1066 pandaexpress.locations, .menu, .nutrition anyapi#1089 person_enrichment.aviato Adds the nextdoor platform (business, search), five TikHub-backed Instagram SKUs, the chatgpt.search commercial surface, and upwork.jobs items[].hourlyRateMin/Max. 149 SKUs reprice, 111 of them down. Also fixes generator/test/ir.test.ts, which failed on the fresh catalog because it scanned the whole serialized IR for the substring "credit" and anyapi#1097 added the description "Accounts credited as coauthors of the post". The invariant is about internal accounting KEYS - that is how the gateway states it in collectViolations (server/internal/test/contractjson/public_json.go:41) and what this test's own name says - so it now walks keys. The em/en dash half is unchanged.
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.
Regenerated against the live gateway exactly as
regen.ymldoes (fetchthenpnpm generate), then reviewed.regen.ymlhas classified blocked and failed on every run since 2026-09-07T01:26Z, so npm and PyPI have been serving a stale catalog at v0.37.2 while five gateway PRs shipped. This is the human decision the fail-closed gate holds out for.The refresh is taken from prod as it stands now: 366 run paths, 366 catalog entries, matching
https://api.getanyapi.com/openapi.json.Every removal traces to a deliberate merged gateway PR
input.requireCursor,input.requireSinglePageremovedinstagram.followers,instagram.followinginput.requireSinglePageremovedtwitter.followers,twitter.followinginput.limitremovedinstagram.followers,instagram.followinglimit: 50andlimit: 1000measured the same 43 items at the same $0.0015input.fixedPriceRange,input.hourlyRateRangeremovedupwork.jobspandaexpress.locations,pandaexpress.menu,pandaexpress.nutritionperson_enrichment.aviatoNothing here reads as an accident, so the batch is accepted rather than the classifier weakened:
generator/src/classify.tsis untouched.What a customer has to change
instagram.followers/instagram.following:limit,requireCursorandrequireSinglePageare gone. Walk the results with the cursor iterator (client.instagram.iterFollowers(...)/iter_followers(...)); a page is a page and the price is flat either way.twitter.followers/twitter.following:requireSinglePageis gone. Same iterator answer.upwork.jobs:fixedPriceRangeandhourlyRateRangeare gone. Filter client-side on the newitems[].hourlyRateMin/items[].hourlyRateMax. The SKU also drops from $0.0908 to $0.0286.pandaexpress.*andperson_enrichment.aviatono longer exist. They already 404 in production; the SDKs stop offering the methods.What a customer gains
nextdoorwithnextdoor.businessandnextdoor.search.location_posts,post_likers,search_locations,similar_profiles,user_reposts.chatgpt.searchgains four optional inputs (requireAds,requireEntities,requirePlaces,requireShoppingCards), four matching outputs, andcitations[].answerPosition(anyapi#1077).upwork.jobsgainsitems[].hourlyRateMin/items[].hourlyRateMax.upwork.jobs$0.0908 -> $0.0286, fouryoutube.*SKUs $0.002 -> $0.0012. The 38 rises are mostly sub-cent roundings; the largest istiktok.profile$0.00045 -> $0.0012. Every one of these is already the live price; only the SDK docstrings were stale.One test fixed, and why it is not a weakened guard
generator/test/ir.test.tsfailed on the fresh catalog: it asserts the serialized IR contains nocreditanywhere, and anyapi#1097 added the description "Accounts credited as coauthors of the post" to two Instagram SKUs. That is ordinary English about attribution, not internal accounting.The invariant's owner is the gateway, and it states the rule as a key check -
collectViolationsinserver/internal/test/contractjson/public_json.go:41walks keys, never values. The test's own name says "has no credit key". It now checks keys, matching both. The em/en dash half of the assertion is unchanged.Gate
Input-degradation guard (the failure mode a byte-drift check structurally cannot see):
Data = unknownstays at 0, typed interfaces 1184 -> 1195, iterator surfaces 55 -> 57.Counting interfaces is necessary but not sufficient, so two real production payloads were validated through the regenerated pydantic models on throwaway
/agent/signuptrial keys, not a wallet:nextdoor.search(new SKU, new platform) - 3 items,NextdoorSearchItem, $0.01408upwork.jobs(removed inputs + new outputs) - 10 items,UpworkJobsItem,hourly_rate_min/hourly_rate_maxboth present, $0.0121Releasing
Not tagged:
AGENTS.mdforbids tagging an unmerged commit. After merge, pushv0.38.0on the merge commit to publish to npm and PyPI.🤖 Generated with Claude Code