You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Commerce Protocol now walks readers through purchase, verification,
ownership, access, events, and account deletion, with IAPKit and the
runnable example alongside each step. The architecture opens
explanations in place; navigation, nested accordions, and transitions
follow the same documentation layout.
IAPKit binds Amazon and Horizon purchases to authenticated app accounts
and rechecks ownership before returning access. Only entitled evidence
binds, at most 20 purchases per app account; the 21st binding answers
`bound: false` (SPEC §4.4) and is logged, and the read keeps the same
bound as a backstop. Rechecks draw on their own admission bucket (300
tokens, 5/s, one per bound purchase) before any store call and do not
write back an unchanged verdict. Erasure refuses the erased app user id
while its job is retained; another app account may bind the same Amazon
or Horizon evidence afterwards as a first binding. Apple and Google
subscription rows keep their permanent erasure marker.
The example → IAPKit → example check keeps one app backend and receiver
unchanged: 170 assertions, recorded at the committed sources. The docs
build verifies that the report, snapshots, hashes, and `#L<n>` anchors
agree with each other; freshness against the current IAPKit sources is
the advisory `bun run audit:commerce-evidence`, run with
`continue-on-error` in the web E2E job, and a recording from an
uncommitted tree is marked `-dirty`. Static HTML, canonical metadata,
sitemap generation, and readable AI entry points make the same guides
available without JavaScript.
Companion example:
hyodotdev/openiap-commerce-protocol-example#1.
Checks: IAPKit lint and the full IAPKit test suite (one existing skip),
compiled-server smoke, the protocol suite, 170 provider-replacement
assertions, the composition and source-provenance checks, 144
prerendered pages, and the SDK parity, docs, layout, CI-path, and
agent-surface audits pass locally.
Review: CodeRabbit skips this diff (over its 100-file limit) and Codex
is over its usage limit until Sep 15, so this head was reviewed by three
independent read-only review-self lenses (kit correctness, tests and
tooling, docs and protocol) and by Grok on the pasted diff. Every
finding that did not need a product decision was fixed in `3bf91680` and
the follow-up commit; the Grok notes left as they are, with reasons, are
in the PR comments.
Merge gate: device regression remains pending for the `packages/kit`
Martie live-receipt rows on iOS and Android/Play. The local four-store
checks use synthetic evidence and mocked store responses; no real
Amazon, Horizon, Apple, or Google checkout is claimed. Cross-company
adoption and production migration are not established by this run.
Preview
[commerce-docs.webm](https://github.com/user-attachments/assets/853d1473-14bd-4c04-82bb-d9278f4eeb9f)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
description: Propose shared behavior or contribute implementation interoperability evidence.
3
+
title: "[Commerce Protocol]: "
4
+
body:
5
+
- type: markdown
6
+
attributes:
7
+
value: |
8
+
Start with a concrete connection between products. See the [contribution procedure](https://github.com/hyodotdev/openiap/blob/main/specs/commerce-protocol/CONVENTION.md#public-collaboration-and-implementation-evidence).
9
+
IAPKit and other implementations are reviewed against the same contract. Submitting a report is not a conformance or endorsement claim.
10
+
- type: dropdown
11
+
id: contribution
12
+
attributes:
13
+
label: Contribution
14
+
options:
15
+
- Interoperability reproduction
16
+
- Contract extension
17
+
- Compatibility problem
18
+
validations:
19
+
required: true
20
+
- type: textarea
21
+
id: outcome
22
+
attributes:
23
+
label: Use case and expected outcome
24
+
description: Which services or roles need to connect, and what should the user observe?
25
+
validations:
26
+
required: true
27
+
- type: textarea
28
+
id: implementations
29
+
attributes:
30
+
label: Implementations and reviewers
31
+
description: List source revisions, roles, stores, bindings, declared profiles, and relevant affiliations. Distinguish project-authored fixtures from an external implementation or review.
32
+
validations:
33
+
required: true
34
+
- type: textarea
35
+
id: reproduction
36
+
attributes:
37
+
label: Runnable evidence
38
+
description: Provide commands, source/report links, expected results, and a failure or rejection case. List configuration fields and adapter/client changes; omit credentials and customer data.
39
+
validations:
40
+
required: true
41
+
- type: textarea
42
+
id: compatibility
43
+
attributes:
44
+
label: Compatibility and alternatives
45
+
description: Can existing profiles or extensions express this? For a contract change, identify MAJOR/MINOR impact and migration work. For a reproduction, state whether the client and receiver code changed.
46
+
validations:
47
+
required: true
48
+
- type: textarea
49
+
id: limits
50
+
attributes:
51
+
label: Limits and unresolved questions
52
+
description: State what remains untested, who has reproduced the result, and any disagreement about expected behavior.
0 commit comments