Repository navigation
docs(downgrader): note cycle order, $defs size, swagger_dart_code_generator, swagger_parser and OpenApiSpex quirks - #137
Conversation
…enerator, swagger_parser and OpenApiSpex quirks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H41Joj1bcf6cWAwxSpC2c7
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
ℹ️ Minor suggestions only.
Reviewed changes — docs-only update to packages/downgrader/README.md; I verified the new third-party claims against each tool's source and confirmed the repo formatter still passes.
$defsserialized size — new bullet explaining that inlining every$refinto$defs/definitionsmakes layered definitions expand when serialized (Kestra example), and recommendingcomponents/schemas.- Cycle order — extends the existing cycle
not/oneOflimitation to anot/oneOfoutside the cycle, over a$refto a cycle schema loosened only through such a$ref. - swagger_dart_code_generator — new bullet on a 3.0 nullable
$ref/enum becomingdynamic, a boolean-schema crash, and a nullable array that fails to build. - swagger_parser — new bullet on a single
allOfproperty forcing every property required and non-null, plus a boolean-schema crash. - OpenApiSpex — added to the kin-openapi/openapi_parser bullet on rejecting null for an untyped
{}.
I checked the three new third-party bullets against source and they hold: the dart generator only treats a literal type: "null" as null in its union path (swagger_models_generator.dart), and crashes casting a boolean items (swagger_schema.g.dart:20); swagger_parser's hasAllOfKey forces required/non-null (open_api_parser.dart:768-824) and crashes on a boolean schema (open_api_parser.dart:1324); OpenApiSpex's current Cast path rejects null for {} (cast.ex:157, ahead of the type: nil wildcard at :208). The only open point is the input size on the new $defs bullet, noted inline.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H41Joj1bcf6cWAwxSpC2c7
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — the delta since the prior pullfrog review is a single-line clarification to the $defs size bullet in packages/downgrader/README.md.
$defssize bullet figures — states the Kestra input as "4 MB as compact JSON" and revises the projected output to "about 84 TB", resolving the prior review's note that the publishedkestra-0.19.0.jsonis ~7.6 MB and only ~3.98 MB once minified. The author's figures (3,975,214 bytes in; 83,683,942,216,949 bytes out) are internally consistent with the new wording, and no other lines changed.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Requested by dinwwwh · project thread
Docs only. Five README notes for
packages/downgrader, all found by the issue hunt on main 81010aa:notoroneOfoutside a cycle can also reject values, when its$reftargets a cycle schema that lost a restriction only through a back$ref. Whether it does depends on which schema of the cycle comes first.$defssize: each$refinto$defsrepeats its target once serialized. SchemaStore's Kestra flow schema, 4 MB as compact JSON, would serialize to about 84 TB. In a document,components/schemasavoids this.{ type: "null" }as null, so a nullable$refor enum (aoneOfwith the"null"branch) becomesdynamic. Its 3.1 path keeps the class but stops on boolean schemas and fails on a nullable array.requiredlist, oneallOfproperty (a$refwith siblings) makes every property required and non-null, so decoding a value without an optional property throws. Its 3.1 path stops on boolean schemas.All changed lines are list items, so there are no table cells to break.
pnpm run checkpasses.🤖 Generated with Claude Code
https://claude.ai/code/session_01H41Joj1bcf6cWAwxSpC2c7