Repository navigation
release: promote v4.2.0 to main - #34
Merged
Merged
Conversation
…import CLAUDE.md was a 212-line copy of AGENTS.md that differed only in the tool name, so every rule change had to land twice. AGENTS.md is now the canon for Codex and Claude Code; CLAUDE.md imports it and keeps only Claude-specific notes (swift build/test exception, ask-listed production tools, local secrets). The mandatory doc-comment rule is marked as this repository's exception to the owner's global comment default.
…on at the skill The ask list gates the main production families but not every live-store write, so the note now says to treat every write against a real company as live and owner-only unless provably reversible. The build note names swift-build-discipline, which now carries the pure SwiftPM exception.
Apple replaced App Store Connect OpenAPI 4.4.1 with 4.5 between 2026-09-21 and 2026-09-23, so the strict contract gate failed on every branch with 1,051 expired-review and pin errors and no code change. The pinned 4.4.1 document was recovered byte-for-byte from the Wayback Machine (snapshots 20260820205342 and 20260916204644 of Apple's zip: the zip SHA-1 equals the CDX digest and openapi.oas (2).json hashes to the pinned ed0202ef...). The previous manifest passes --strict against it with 0 errors and 0 warnings. Every stamp below is backed by a 4.4.1 -> 4.5 diff of operations, parameters, request-body inputs, requiredness, and response lineage: - specPin: 4.5, 973 paths, 1,270 operations, SHA-256 1e8ef250... - 644 exact optional-input classifications re-stamped: every classified Apple input is unchanged, including its referenced schemas and text. - sparseFields family rule re-decided: 110 of its 1,139 inputs changed only in enum values (fields[apps] +performanceOverviews, fields[subscriptions] +marketSettings/multiSeatStatus, fields[ageRatingDeclarations] +gracRatingClassificationNumber, fields[gameCenterDetails] +blockedPlayers, fields[appInfos] -kidsAgeBand). No new fields[...] input reached a mapped operation, and public tools still expose documented projections instead of caller-controlled sparse fieldsets. - 424 waivers: 385 unchanged; 39 re-decided because only referenced App, AppInfo, or GameCenterDetail schemas and fields[...] enums changed. No public tool maps these operations, so each deferral stands. - Scope rules: /v1/alternativeDistribution and /v1/marketplace unchanged; /v1/gameCenter (+4 operations) and /v2/gameCenter (+2 operations) re-decided as still out of scope. - New operation apps_performanceOverviews_getToManyRelated is deferred. - New optional inputs are classified as intentionally omitted: gracRatingClassificationNumber on app_versions_update_age_rating, and marketSettings and multiSeatStatus on subscriptions_update. - 17 reviewed reasons that cite the pinned Apple version now cite 4.5; each claim was verified against 4.5, and the build encryption-declaration PATCH deprecation against current Apple DocC. - optionalInputCoveragePin: 2,907 total, 1,121 bound, 40 internally controlled, 1,746 intentionally omitted, 0 unclassified. The only requiredness change on a mapped operation, filter[planType] on adjusted equalizations, is handled in the next commit.
App Store Connect API 4.5 marks filter[planType] as required on
GET /v1/subscriptionPricePoints/{id}/adjustedEqualizations; 4.4.1 left it
optional. subscriptions_list_price_point_adjusted_equalizations published
plan_types as optional and sent filter[planType] only when it was supplied,
so every call without it produced a request that Apple's current contract
rejects. The contract gate did not flag this because the input is bound
and the checker does not compare Apple requiredness with the MCP schema.
plan_types is now required in the input schema, and a missing or empty
value fails before any network request. The sibling
subscriptions_list_price_point_equalizations keeps plan_types optional
because Apple 4.5 keeps that filter optional.
BREAKING CHANGE: MCP clients must pass plan_types (MONTHLY, UPFRONT, or
both) to subscriptions_list_price_point_adjusted_equalizations.
- Tests that assert manifest pins now expect specPin 4.5 (SHA-256 1e8ef250..., 1,270 operations), 425 waivers and 369 scope-rule operations, the optional-input pin 2,907 / 1,121 / 40 / 1,746 / 0 with identity 0ce3ff14..., and reviewAtSpec 4.5. The two export-compliance waiver reason checks follow the verified 4.5 wording. - ASCCoverageInventory moves to appleAPIVersionBaseline 4.5 and snapshot date 2026-09-24. The baseline is not independent of the contract pin: it was set to 4.4.1 together with the 4.4.1 contract hardening (4ae6293), the inventory drives ASC-OPENAPI-COVERAGE-GENERATED.md, which CI compares with the live Apple specification, and its rules classify all 973 Apple 4.5 paths. - ASC-OPENAPI-COVERAGE-GENERATED.md is regenerated from Apple 4.5: 973 paths, 1,270 operations, 0 unclassified. - README and CHANGELOG record the 4.5 pin and counts, the coverage matrix points at the 4.5 generated matrix, and the README promoted-image rows cite pinned OpenAPI 4.5, where promotedPurchaseImages is still absent. - Historical statements stay unchanged: deprecations since 4.4.1, features introduced in 4.4.1, earlier CHANGELOG entries, and test titles that describe 4.4.1 fixtures.
…ventories The Apps and AppLifecycle and the commerce inventory tests pin the exact number of optional-input classifications, and the subscription write test pins the omitted body inputs of subscriptions_update. They now include gracRatingClassificationNumber, marketSettings, and multiSeatStatus, which the 4.5 re-baseline classifies as intentionally omitted: 120 Apps and AppLifecycle classifications (119 omitted) and 171 commerce classifications (140 omitted).
chore(contract)!: re-baseline the operation manifest to Apple API 4.5
docs: make AGENTS.md the shared agent canon and slim CLAUDE.md to an import
…ization default with live Apple API
feat(assets): add App Asset Library and Apple API 4.5.1 support (v4.2.0)
chore: sync main v4.1.6 merge commit into develop
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.
Promote
v4.2.0fromdeveloptomainafter live App Store Connect MCP verification and independent code review.