Skip to content

release: promote v4.2.0 to main - #34

Merged
zelentsov-dev merged 18 commits into
mainfrom
develop
Oct 19, 2026
Merged

zelentsov-dev merged 18 commits into
mainfrom
develop

Conversation

@zelentsov-dev

Copy link
Copy Markdown
Owner

Promote v4.2.0 from develop to main after live App Store Connect MCP verification and independent code review.

zelentsov-dev and others added 18 commits September 24, 2026 00:20
…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
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
@zelentsov-dev
zelentsov-dev merged commit 54e27a4 into main Oct 19, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant