0000000000000000000000000000000000000000 f76b0eda587acec4aef1199132b0cc257ba2eda6 baikov1 1790734829 -0700 commit (initial): chore: stage 0 platform foundation f76b0eda587acec4aef1199132b0cc257ba2eda6 f76b0eda587acec4aef1199132b0cc257ba2eda6 baikov1 1790735026 -0700 checkout: moving from main to stage-1-ledger f76b0eda587acec4aef1199132b0cc257ba2eda6 a6af1e0a5e5c98f9c5edec142d3b0e320d38043d baikov1 1790737047 -0700 commit: feat(ledger): stage 1 points ledger a6af1e0a5e5c98f9c5edec142d3b0e320d38043d a6af1e0a5e5c98f9c5edec142d3b0e320d38043d baikov1 1790737141 -0700 checkout: moving from stage-1-ledger to stage-2-members a6af1e0a5e5c98f9c5edec142d3b0e320d38043d 09c63460d83a2e8d49f3fe7b4a5955b1841f50ea baikov1 1790738060 -0700 commit: feat(members): stage 2 members, identification and consents 09c63460d83a2e8d49f3fe7b4a5955b1841f50ea 09c63460d83a2e8d49f3fe7b4a5955b1841f50ea baikov1 1790738134 -0700 checkout: moving from stage-2-members to stage-3-rules 09c63460d83a2e8d49f3fe7b4a5955b1841f50ea a9ebe3f9c6bcb7e879ec2413ad557d826b3853be baikov1 1790740027 -0700 commit: feat(rules): stage 3a — catalog, program rules and receipt calculation a9ebe3f9c6bcb7e879ec2413ad557d826b3853be 3de22bbded514c6b9b4430bb90c1f923d0230c1c baikov1 1790742450 -0700 commit: feat(rules): stage 3b — campaigns and promo codes 3de22bbded514c6b9b4430bb90c1f923d0230c1c 3de22bbded514c6b9b4430bb90c1f923d0230c1c baikov1 1790742583 -0700 checkout: moving from stage-3-rules to stage-4-checkout 3de22bbded514c6b9b4430bb90c1f923d0230c1c f7cad2e65dc9f8cf1cf316f77d4f8e2d17601acc baikov1 1790743540 -0700 commit: feat(access): stage 4a — runtime API keys, idempotency and rate limits f7cad2e65dc9f8cf1cf316f77d4f8e2d17601acc 91b37ed79703a34957930bdaaafe02ea6d806112 baikov1 1790744576 -0700 commit: feat(processing): stage 4b — receipts and the checkout protocol 91b37ed79703a34957930bdaaafe02ea6d806112 c2a0ff6f7f1f0082bc8446b5c2441fc895fda16f baikov1 1790745651 -0700 commit: feat(processing): stage 4c — members API, redemption confirmation, offline batches c2a0ff6f7f1f0082bc8446b5c2441fc895fda16f 883825582f8521c466b27c4124f8742b08e8b2a3 baikov1 1790746381 -0700 commit: feat(api): runtime API specification with contract checks 883825582f8521c466b27c4124f8742b08e8b2a3 b032a5d57f5665794d644b2a992ad095b4c6c5de baikov1 1790747466 -0700 commit: perf: fewer database round trips in the checkout; k6 load test b032a5d57f5665794d644b2a992ad095b4c6c5de 3592459f3a94608c32aeb3776113633a91ebff67 baikov1 1790749834 -0700 commit: feat(tiers): stage 3c — member tiers 3592459f3a94608c32aeb3776113633a91ebff67 7a8a0bd069831e7c70326d3a7193aff21882f386 baikov1 1790751678 -0700 commit: feat(bonuses): stage 3c — welcome, referral and birthday bonuses 7a8a0bd069831e7c70326d3a7193aff21882f386 4bc9e43c94695b54aebe9f56d83e0c3a7185168e baikov1 1790752427 -0700 commit: feat(rules): stage 3c — calendar and inactivity expiration policies 4bc9e43c94695b54aebe9f56d83e0c3a7185168e 54058e9d2f9c6f0eb7bff72d3398cd75c1833e17 baikov1 1790754422 -0700 commit: feat(stamps): stage 3c — stamp cards; stage 3 complete 54058e9d2f9c6f0eb7bff72d3398cd75c1833e17 a8fd3a5d2085c7fd5f708f6ec87c2e42c1f75754 baikov1 1790757853 -0700 commit: feat(events): stage 5a — transactional outbox and webhooks a8fd3a5d2085c7fd5f708f6ec87c2e42c1f75754 a8fd3a5d2085c7fd5f708f6ec87c2e42c1f75754 baikov1 1790757877 -0700 checkout: moving from stage-4-checkout to stage-5-management a8fd3a5d2085c7fd5f708f6ec87c2e42c1f75754 dfd9f7445f04760ed4336dba6eef107b95bcee33 baikov1 1790758945 -0700 commit: feat(management): stage 5b — partners, OAuth client credentials, Management API dfd9f7445f04760ed4336dba6eef107b95bcee33 7947c9d9cf1ba266e13b685d3e60bd232037e519 baikov1 1790759821 -0700 commit: feat(management): stage 5c — provisioning programs, rules and organization 7947c9d9cf1ba266e13b685d3e60bd232037e519 0095ab3da92a5db3657c8ee21c041081df2095bd baikov1 1790760433 -0700 commit: feat(management): stage 5c — campaigns, promo codes and members 0095ab3da92a5db3657c8ee21c041081df2095bd 943a2c4c531a060131f64e971a27fe7e431ac240 baikov1 1790851368 -0700 commit: feat(audit): stage 5d — audit log of the Management API 943a2c4c531a060131f64e971a27fe7e431ac240 77151e1a4b5ce65f931a20dae7298aef003a7caf baikov1 1790851504 -0700 commit: chore(dev): run the project PostgreSQL on port 5433 77151e1a4b5ce65f931a20dae7298aef003a7caf 42fd8fb9337510592d41b3652be9c623daf4222d baikov1 1790854954 -0700 commit: fix(audit): refusals under the rate limit, partner entries, redaction gaps 42fd8fb9337510592d41b3652be9c623daf4222d 7686e8782ff7a0bee824ee9fdae3d992d9d5b2df baikov1 1790855046 -0700 commit: fix(ci): port of the CI PostgreSQL service 7686e8782ff7a0bee824ee9fdae3d992d9d5b2df d9c954647f0601afdedd2e4b75ff28c09830b584 baikov1 1790861785 -0700 commit: spec(api): problem-code catalog and complete error responses d9c954647f0601afdedd2e4b75ff28c09830b584 d4f57fa9b5fd77e79a0c34089ecc11ef963993d9 baikov1 1790863191 -0700 commit: feat(sdk): closed-world generator from the OpenAPI specifications d4f57fa9b5fd77e79a0c34089ecc11ef963993d9 edd978e5020d641440142ff4654dc9a3d4572354 baikov1 1790864232 -0700 commit: feat(sandbox): sandbox for integrators — test data, doubles, credential markers edd978e5020d641440142ff4654dc9a3d4572354 c16c5710746c100637597a44780ea932fb7fe8c7 baikov1 1790868840 -0700 commit: fix(sandbox): bind the environment into stored keys, authoritative doubles, test fixes c16c5710746c100637597a44780ea932fb7fe8c7 a22581c6fed7502fa0ec227688bace011b40a0fc baikov1 1790871623 -0700 commit: feat(sdk): PHP and TypeScript SDKs with a shared behaviour contract a22581c6fed7502fa0ec227688bace011b40a0fc a22581c6fed7502fa0ec227688bace011b40a0fc baikov1 1790890087 -0700 checkout: moving from stage-5-management to stage-6-cabinets a22581c6fed7502fa0ec227688bace011b40a0fc 5bff7f782e733b42b3f75d5e304f028aace51d32 baikov1 1790905803 -0700 commit: feat(identity): stage 6a — staff accounts, memberships and access 5bff7f782e733b42b3f75d5e304f028aace51d32 34302b9472ceed381228b2bc59ee98eab0000daa baikov1 1790907175 -0700 commit: fix(identity): stage 6a review findings — query values in logs, sign-in racing a password change 34302b9472ceed381228b2bc59ee98eab0000daa 6e4ee6af9a2095dc9af6bbdef9847e6c021bdbd8 baikov1 1790962540 -0700 commit: feat(cabinet): stage 6b-1 — Filament cabinets, sign-in with 2FA, sessions 6e4ee6af9a2095dc9af6bbdef9847e6c021bdbd8 f60b943ae3057ba87faf83faf01901f4105f2f36 baikov1 1790967614 -0700 commit: feat(cabinet): stage 6b-2 — guarded actions, cabinet audit, platform staff f60b943ae3057ba87faf83faf01901f4105f2f36 f802f5e259890b950b062fc7f7e667aa4b206794 baikov1 1790980033 -0700 commit: feat(cabinet): stage 6b-3 — staff mail and forgotten passwords f802f5e259890b950b062fc7f7e667aa4b206794 77b9bf713c3a55d11988adccf59b4efd7f5e195d baikov1 1791028872 -0700 commit: feat(cabinet): stage 6b-4 — invitations to the console and merchant teams 77b9bf713c3a55d11988adccf59b4efd7f5e195d 3d4e2cc6fdc818bc47fe44ca0a2f5b12215191e9 baikov1 1791047505 -0700 commit: feat(cabinet): stage 6c-1 — the merchant's team and audit log 3d4e2cc6fdc818bc47fe44ca0a2f5b12215191e9 5fe84c38e87734524ab30709e3696cf89f2d9cac baikov1 1791050916 -0700 commit: feat(cabinet): stage 6c-2 — the merchant's organization 5fe84c38e87734524ab30709e3696cf89f2d9cac 7d97e9742c986e42d5bbe5bc7f88400feaada57a baikov1 1791055603 -0700 commit: feat(cabinet): stage 6c-3 — the merchant's keys 7d97e9742c986e42d5bbe5bc7f88400feaada57a 84a0b82328c0e36d16917a723922107eaad74c32 baikov1 1791064589 -0700 commit: feat(cabinet): stage 6c-4 — the merchant's webhooks 84a0b82328c0e36d16917a723922107eaad74c32 3d90707d2c49d4ea3051d4e53fb66d0e70af44b0 baikov1 1791072092 -0700 commit: feat(cabinet): stage 6d-1 — partners, merchants and their statuses