CI/CD / containment (push) Successful in 1m7s
Hanzo CI/CD / cicd (push) Successful in 2m6s
CI/CD / gate (push) Successful in 2m7s
CI/CD / image (push) Canceled after 0s
CI/CD / rollout (push) Canceled after 0s
CI/CD / reach (push) Canceled after 0s
CI/CD / fanout (push) Canceled after 0s
CI/CD / receipt (push) Canceled after 0s
Regenerating every subset from source is the drift gate, and it turns up drift in two apps beyond the ones whose prose this branch fixes. Both are real, and both are in the direction of the published document being AHEAD of the code: it advertises money fields the runtime stopped returning.7b4ddd9eremoved the mint from the referral read and3a8be85bremoved it from the promo redemption. Both regenerated their zipdoc_gen.go, so the PROSE moved; neither regenerated plugin/<app>/openapi.json, so the SCHEMAS did not. The result is 15 referral fields and 4 promo fields published as response properties no handler can populate -- refereeGrantCents, referrerGrantCents, creditsEarnedCents, refereeBonusCents, referrerBonusCents, grantedCents, creditsCents, the credited counters and the txn ids on the referral side; creditCents and creditEntryId, plus the plan and seats request fields, on the promo side. apps/referrals' assertNoMoneyKeys already fails the runtime response if any of them reappears, so source and test agreed with each other and only the artifact disagreed. Two fields the code does return -- Redemption.discountCents and sweepResult.qualified -- were missing for the same reason. Every SDK, the MCP tool list and the CLI are projections of this file, so those were dead money fields in every generated client's types. The operation-count ratchet did not and could not catch it: openapi/floor.json counts paths, operations and per-product operations, and none of those move when a response schema loses a field. It ratchets UP here -- billing 26 -> 27, operations 2351 -> 2352 -- for the newly described GET /v1/billing/tier. Proved structurally rather than by diff, over the parsed documents with description and summary elided at every depth: across openapi.yaml the only identity change is that one operation GAINED, no operation was lost, no operationId moved, and all 22 contract differences are the marketing and referrals schema fields named above. The commerce prose entry contributes none of them. Co-authored-by: Hanzo Dev <dev@hanzo.ai>
14 KiB
14 KiB