Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
771 commits
Select commit Hold shift + click to select a range
57b70e1
feat(audit): adaptive anomaly detection and security alert resolution…
mathrmartins Oct 9, 2026
965125d
Merge pull request #745 from gameguild-gg/feature/issue-334-goal-2026…
mathrmartins Oct 9, 2026
7c13cef
fix(auth): capture role attribution in permission evaluation records …
tolstenko Oct 9, 2026
535b62d
Merge remote-tracking branch 'origin/develop' into feature/issue-359-…
mathrmartins Oct 9, 2026
fd68009
fix(build): clear analyzer warnings in permission expiration and api …
tolstenko Oct 9, 2026
c6bd57d
Merge remote-tracking branch 'origin/develop' into fix/ghas-codeql-wa…
tolstenko Oct 9, 2026
47d85a6
feat(authorization): external authorization-decision integration (OAu…
tolstenko Oct 9, 2026
d676bf9
feat(grading): test quiz-grading-scenario
migmoroni Oct 9, 2026
9558931
test(authorization): mock resource-grant layer in external-decision r…
tolstenko Oct 9, 2026
089df08
chore(authorization): suppress CodeQL clear-text false positives on u…
tolstenko Oct 9, 2026
4dbab7a
chore(lint): prune suppressions orphaned by develop merge
tolstenko Oct 9, 2026
ae336a4
fix(features): satisfy brace and parameter hygiene findings
tolstenko Oct 9, 2026
0146fa8
fix(security): document guarded outbound fetch sites (SSRF FP annotat…
tolstenko Oct 9, 2026
197b804
style(scripts): conform pnpm-process and QuickJS sync scripts to lint…
tolstenko Oct 9, 2026
ccc60aa
chore(client): regenerate OpenAPI client from CI artifact to clear ar…
tolstenko Oct 9, 2026
008f87b
test(payments): serialize Stripe intent creation tests against proces…
tolstenko Oct 9, 2026
36e69c4
Merge pull request #701 from gameguild-gg/dependabot/npm_and_yarn/str…
tolstenko Oct 9, 2026
866e1e5
build(deps): bump @stripe/react-stripe-js from 6.10.0 to 7.0.0
dependabot[bot] Oct 9, 2026
95dbda6
Merge pull request #702 from gameguild-gg/dependabot/npm_and_yarn/str…
tolstenko Oct 9, 2026
2888759
Merge remote-tracking branch 'origin/develop' into dependabot-manual-712
tolstenko Oct 9, 2026
a1a8c2f
fix(authorization): place CodeQL suppressions on their own line above…
tolstenko Oct 9, 2026
416a445
Merge pull request #741 from gameguild-gg/feature/feed-blog-embed
tolstenko Oct 9, 2026
7e67c30
fix(grading): e2e verify
migmoroni Oct 9, 2026
81fd8a0
fix(learn): api feedback
migmoroni Oct 9, 2026
fe8d5f8
Merge pull request #698 from gameguild-gg/fix/ghas-codeql-waves
tolstenko Oct 9, 2026
5c72484
Merge pull request #747 from gameguild-gg/feature/issue-146-acfix-202…
mathrmartins Oct 9, 2026
7633a72
fix(grading): username, password and email more simple
migmoroni Oct 9, 2026
6084b37
refactor(auth): extract IApiKeyRepository for API-key credential pers…
mathrmartins Oct 9, 2026
4bcff62
Merge remote-tracking branch 'origin/develop' into feature/issue-266-…
mathrmartins Oct 9, 2026
e226590
fix(web): drop unnecessary non-null assertions in feed announcement p…
tolstenko Oct 9, 2026
1c1795e
feat(auth): notify owners of suspicious sign-ins via NotificationService
mathrmartins Oct 9, 2026
4c53ebf
Merge remote-tracking branch 'origin/develop' into dependabot-manual-712
tolstenko Oct 9, 2026
2e02660
Merge remote-tracking branch 'origin/develop' into feature/issue-247-…
mathrmartins Oct 9, 2026
cfe763d
fix(scripts): dev-stop dont close dotnet watch
migmoroni Oct 9, 2026
b2ec102
Merge remote-tracking branch 'origin/develop' into feature/grading
migmoroni Oct 9, 2026
7961717
Merge pull request #750 from gameguild-gg/feature/issue-266-goal-2026…
mathrmartins Oct 9, 2026
e314cae
fix(auth): rename shadowed scope in suspicious-login integration test
mathrmartins Oct 9, 2026
7396029
Merge remote-tracking branch 'origin/develop' into feature/issue-353-…
mathrmartins Oct 9, 2026
906f2ab
fix(auth): length-prefixed ACL cache keys, wire time-bound capability…
mathrmartins Oct 9, 2026
3ffed1f
Merge pull request #746 from gameguild-gg/feature/issue-353-354-acfix…
mathrmartins Oct 9, 2026
ce576b8
fix(auth): seed unique usernames in suspicious-login integration tests
mathrmartins Oct 9, 2026
c2efd51
feat(auth): remember-me persistent sessions across local, OAuth and W…
mathrmartins Oct 9, 2026
1bf176a
feat(auth): record and manage fine-grained OAuth scope grants (#250)
mathrmartins Oct 9, 2026
943af10
Merge remote-tracking branch 'origin/develop' into feature/issue-250-…
mathrmartins Oct 9, 2026
44bf98e
feat(billing): comprehensive webhook security validation (#393)
mathrmartins Oct 9, 2026
8854025
chore(openapi): regenerate client for the billing webhook security en…
mathrmartins Oct 9, 2026
449a032
Merge remote-tracking branch 'origin/develop' into feature/issue-393-…
mathrmartins Oct 9, 2026
e5b256b
Merge remote-tracking branch 'origin/develop' into feature/issue-265-…
mathrmartins Oct 9, 2026
33b9465
fix(auth): record suspicious-login alerts outside the sign-in transac…
mathrmartins Oct 9, 2026
10f17fd
fix(ci): exclude benchmark harnesses from affected API test selection
tolstenko Oct 9, 2026
5ab550f
fix(root): pnpm overrides
migmoroni Oct 9, 2026
0a834eb
fix(dev): dev-fast quickjs
migmoroni Oct 9, 2026
85e79ce
fix(api): data tests
migmoroni Oct 9, 2026
aaf1e3d
Merge branch 'feature/grading' into develop
migmoroni Oct 9, 2026
115cdae
chore(client): regenerate typed client from merged develop surface
mathrmartins Oct 9, 2026
d181a3f
test(security): adversarial deny-by-default validation suite for #327
tolstenko Oct 9, 2026
6a42934
Merge remote-tracking branch 'origin/develop' into feature/issue-327-…
mathrmartins Oct 9, 2026
477a996
chore(openapi): regenerate client against merged develop
mathrmartins Oct 9, 2026
0c36c64
chore(client): refresh OpenAPI client metadata after develop merge
mathrmartins Oct 9, 2026
71e78dc
fix(ci): read pnpm security gate config from pnpm-workspace.yaml
tolstenko Oct 9, 2026
4f73e69
fix(emception): re-pin toolchain lock hash after canonical curl overl…
tolstenko Oct 9, 2026
49fe45a
fix(audit): map acknowledge transition violations to 409 Conflict
mathrmartins Oct 9, 2026
8bee394
fix(ci): pull CI PostgreSQL from the public ECR Docker Hub mirror
tolstenko Oct 9, 2026
7ed9fbc
fix(audit): remove stray brace from acknowledge handler
mathrmartins Oct 9, 2026
b26ea2a
feat(auth): sign-in compliance verification gate (issue #267)
mathrmartins Oct 9, 2026
035ab58
Merge remote-tracking branch 'origin/develop' into feature/issue-267-…
mathrmartins Oct 9, 2026
71b2791
Merge remote-tracking branch 'origin/develop' into feature/issue-393-…
mathrmartins Oct 9, 2026
c0aa611
Merge remote-tracking branch 'origin/develop' into feature/issue-250-…
mathrmartins Oct 9, 2026
242e3b8
Merge remote-tracking branch 'origin/develop' into feature/issue-265-…
mathrmartins Oct 9, 2026
462b849
merge develop
mathrmartins Oct 9, 2026
a09bedd
test(auth): finish client-certificate test fixes for #245
mathrmartins Oct 9, 2026
543ba01
Merge pull request #712 from gameguild-gg/dependabot/npm_and_yarn/min…
tolstenko Oct 9, 2026
0a6087a
test(auth): seed four brute-force failures so the request reaches the…
mathrmartins Oct 9, 2026
6c3aa81
Merge remote-tracking branch 'origin/develop' into feature/issue-247-…
mathrmartins Oct 9, 2026
12ef55b
Merge remote-tracking branch 'origin/develop' into feature/issue-327-…
mathrmartins Oct 9, 2026
9fb1037
fix(auth): avoid nullable-annotation mismatch in compliance policy te…
mathrmartins Oct 9, 2026
29da2fb
Merge remote-tracking branch 'origin/develop' into feature/issue-267-…
mathrmartins Oct 9, 2026
02e0cac
test(audit): remove orphaned AuditAnomaly tests along with the delete…
mathrmartins Oct 9, 2026
569b5a5
fix(auth): repair PR CI — cert fixture validity race, eager PEM fail-…
mathrmartins Oct 9, 2026
5ccb9e9
fix(ci): probe for free Testing Lab ports and mirror its PostgreSQL i…
tolstenko Oct 9, 2026
07f19b3
fix(security): remediate findings from adversarial deny-by-default va…
mathrmartins Oct 9, 2026
017ced7
fix(auth): register allow-all compliance policy by instance factory
mathrmartins Oct 9, 2026
2db2deb
test(auth): make the brute-force alert test self-diagnosing
mathrmartins Oct 9, 2026
1f8d5b2
test(security): probe mutation endpoints with contract-correct bodies
mathrmartins Oct 9, 2026
135fe1c
chore(client): refresh OpenAPI client metadata after develop merge
mathrmartins Oct 9, 2026
2e131b4
fix(billing): set up GetBlockedSources stub in pipeline-failure summa…
mathrmartins Oct 9, 2026
1e9d9d4
test(auth): bind Kestrel test host to 127.0.0.1:0 instead of ListenLo…
mathrmartins Oct 10, 2026
93c2931
feat(auth): deliver permission-expiration alert notifications and doc…
mathrmartins Oct 10, 2026
f639625
test(auth): add PostgreSQL HTTP integration tests for monetization pe…
mathrmartins Oct 10, 2026
4847488
Merge remote-tracking branch 'origin/develop' into feature/issue-331-…
mathrmartins Oct 10, 2026
30dd34c
Merge pull request #757 from gameguild-gg/feature/issue-267-goal-2026…
mathrmartins Oct 10, 2026
b75bdd3
fix(auth): keep adaptive anomaly in cold start until the baseline min…
mathrmartins Oct 10, 2026
a026318
chore: re-trigger PR verification workflow
mathrmartins Oct 10, 2026
23e8437
fix(auth): align legacy sign-up handler with develop signature and co…
mathrmartins Oct 10, 2026
c1a6102
test(auth): surface mTLS integration failure diagnostics on CI
mathrmartins Oct 10, 2026
29e232c
test(auth): brute-force alert needs committed history above the locko…
mathrmartins Oct 10, 2026
2161069
Merge pull request #753 from gameguild-gg/feature/issue-327-acfix-202…
mathrmartins Oct 10, 2026
2cc3c9e
ci: retrigger PR verify
mathrmartins Oct 10, 2026
f5f329f
feat(billing): comprehensive webhook security validation (#754)
mathrmartins Oct 10, 2026
b726d69
Merge remote-tracking branch 'origin/develop' into feature/issue-265-…
mathrmartins Oct 10, 2026
efcb063
Merge remote-tracking branch 'origin/develop' into feature/issue-265-…
mathrmartins Oct 10, 2026
da6b65a
fix(auth): correct #250 test defects flagged by CI (#760)
mathrmartins Oct 10, 2026
6d2770f
test(auth): select the mTLS client certificate explicitly on Linux
mathrmartins Oct 10, 2026
ba6939c
chore(openapi): regenerate client metadata against merged develop
mathrmartins Oct 10, 2026
1534a37
docs(auth): clarify the lockout-override comment in the brute-force test
mathrmartins Oct 10, 2026
b09c116
fix(ci): retry container image pulls and restore the 25m integration …
tolstenko Oct 10, 2026
2f9f68e
fix(auth): map PermissionAuditLog so permission decision audits actua…
mathrmartins Oct 10, 2026
3c94192
Merge remote-tracking branch 'origin/develop' into feature/issue-331-…
mathrmartins Oct 10, 2026
be0f14f
chore(ci): retrigger PR Verify (#250)
mathrmartins Oct 10, 2026
8231612
test(auth): negotiate TLS 1.2 for the mTLS integration client
mathrmartins Oct 10, 2026
797bb8c
docs(db): regenerate schema.dbml for the PermissionAuditLogs table
mathrmartins Oct 10, 2026
e0fcecd
Merge remote-tracking branch 'origin/develop' into feature/issue-359-…
mathrmartins Oct 10, 2026
9e6bda4
test(auth): stabilize remember-me lifetime tests against shared clock…
mathrmartins Oct 10, 2026
72d5c84
chore(ci): retrigger PR Verify run (#250)
mathrmartins Oct 10, 2026
9b7eb6c
Merge remote-tracking branch 'origin/develop' into feature/issue-200-…
mathrmartins Oct 10, 2026
5af3710
test(auth): drive the mTLS integration test through an explicit SslSt…
mathrmartins Oct 10, 2026
d4c8016
Merge remote-tracking branch 'origin/develop' into feature/issue-247-…
mathrmartins Oct 10, 2026
d05db14
test(auth): assert the as-configured fail-closed denial contract for …
mathrmartins Oct 10, 2026
6c56fba
chore(client): regenerate OpenAPI client from merged develop surface
mathrmartins Oct 10, 2026
47a55b8
Merge remote-tracking branch 'origin/develop' into feature/issue-250-…
mathrmartins Oct 10, 2026
0b0ade1
fix(auth): engage the malformed-row fallback during refresh rotation
mathrmartins Oct 10, 2026
053999e
test(authz): pass role-attribution expectation as collection with bec…
mathrmartins Oct 10, 2026
93053dc
test(auth): require the client certificate during the mTLS handshake
mathrmartins Oct 10, 2026
22b3215
test(auth): pin cross-tenant monetization denial as 403 from the tena…
mathrmartins Oct 10, 2026
31e1913
fix(ci): stop embedding the full needs graph in the required gate env
tolstenko Oct 10, 2026
0f3b2d9
chore(client): regenerate typed client from merged surface (#250)
mathrmartins Oct 10, 2026
d5a2822
fix(auth): resolve the user id on failed sign-ins so brute-force aler…
mathrmartins Oct 10, 2026
6d496ba
chore(web): drop stale no-misused-promises suppression (#250)
mathrmartins Oct 10, 2026
86f300d
fix(auth): persist cadence observation count on baseline upsert
mathrmartins Oct 10, 2026
d5f3857
test(authz): construct a genuinely null-roles record for the normaliz…
mathrmartins Oct 10, 2026
99545ef
feat(auth): remember-me persistent sessions across local, OAuth and W…
mathrmartins Oct 10, 2026
7a995cb
test(auth): mirror the Kestrel test-suite mTLS client pattern
mathrmartins Oct 10, 2026
114c3e6
test(auth): mark the alert-handler deleted user via DeletedAt directly
mathrmartins Oct 10, 2026
bc60bc5
Merge pull request #765 from gameguild-gg/feature/issue-247-goal-2026…
mathrmartins Oct 10, 2026
1cd70bc
Merge pull request #766 from gameguild-gg/feature/issue-359-land-2026…
mathrmartins Oct 10, 2026
4e53cf4
Merge remote-tracking branch 'origin/develop' into feature/issue-250-…
mathrmartins Oct 10, 2026
1db3723
Merge remote-tracking branch 'origin/develop' into feature/issue-200-…
mathrmartins Oct 10, 2026
0f3e781
chore(client): regenerate typed client after develop merge (#250)
mathrmartins Oct 10, 2026
9caade1
test(auth): associate the request key with issued client certificates
mathrmartins Oct 10, 2026
0df9650
Merge remote-tracking branch 'origin/develop' into feature/issue-331-…
mathrmartins Oct 10, 2026
a92a1b8
Merge pull request #759 from gameguild-gg/feature/issue-331-346-acfix…
mathrmartins Oct 10, 2026
6b422e0
Merge pull request #768 from gameguild-gg/feature/issue-250-oauth-sco…
mathrmartins Oct 10, 2026
c0017ee
test(auth): align rotation fixtures with originating-lifetime renewal
mathrmartins Oct 10, 2026
4965fe1
test(auth): probe /cert-whoami over HTTP/1.0
mathrmartins Oct 10, 2026
237935b
fix(auth): renew refresh rotations at the configured lifetime, not th…
mathrmartins Oct 10, 2026
7cdc488
fix(auth): classify refresh rotation by originating policy, not store…
tolstenko Oct 10, 2026
55ece74
test(auth): use contract JSON options in certificate credential DTO t…
mathrmartins Oct 10, 2026
edc1772
Merge pull request #769 from gameguild-gg/feature/issue-200-land-2026…
mathrmartins Oct 10, 2026
cb17258
test(auth): guard rotation against copying short stored lifetimes ove…
mathrmartins Oct 10, 2026
aba5c53
Merge remote-tracking branch 'origin/develop' into fix/refresh-lifeti…
mathrmartins Oct 10, 2026
82686a9
Merge pull request #756 from gameguild-gg/feature/issue-245-goal-2026…
mathrmartins Oct 10, 2026
400fb32
fix(auth): classify rotation persistence by the persistent threshold,…
mathrmartins Oct 10, 2026
93f8e90
Merge remote-tracking branch 'origin/develop' into fix/refresh-lifeti…
mathrmartins Oct 10, 2026
5ef69a9
fix(auth): correct refresh token lifetime regression on develop (#772)
mathrmartins Oct 10, 2026
678a817
feat(security): revoke sessions and tokens on confirmed-compromise ri…
mathrmartins Oct 10, 2026
a6a1627
fix(security): compile fixes for risk-event revocation consumer tests
mathrmartins Oct 10, 2026
958ec0f
feat(auth): one-time email sign-in code modality for passwordless flo…
mathrmartins Oct 10, 2026
80d9fb5
test(api): align inbox receipt assertions with the third suspicious-l…
mathrmartins Oct 10, 2026
3736f09
Merge remote-tracking branch 'origin/develop' into feature/issue-279-…
mathrmartins Oct 10, 2026
a326ede
Merge pull request #775 from gameguild-gg/feature/issue-279-risk-revo…
mathrmartins Oct 10, 2026
46c730c
feat(auth): config-gated generic OIDC federation SSO for enterprise i…
mathrmartins Oct 10, 2026
9b94646
feat(billing): named billing events, events API, and webhook retry wo…
mathrmartins Oct 10, 2026
d4ba1fe
Merge remote-tracking branch 'origin/develop' into feature/issue-396-…
mathrmartins Oct 10, 2026
d2cdf98
chore(openapi): regenerate client on merged tree (billing events + OI…
mathrmartins Oct 10, 2026
9995fb7
feat(billing): register CQRS validation behavior and cache webhook se…
mathrmartins Oct 10, 2026
44fa105
Merge pull request #778 from gameguild-gg/feature/issue-396-billing-e…
mathrmartins Oct 10, 2026
bf9d7a5
test(api): response-level security header verification for CSP/HSTS d…
mathrmartins Oct 10, 2026
d70ab65
fix(auth): server-owned timing compensation for enumeration resistanc…
mathrmartins Oct 10, 2026
d36de62
fix(billing): currency-dimensioned revenue auditing totals
mathrmartins Oct 10, 2026
4d3e29f
Merge pull request #781 from gameguild-gg/feature/issue-404-revenue-c…
mathrmartins Oct 10, 2026
e034c67
fix(web): adopt approved GameGuild spelling
mathrmartins Oct 10, 2026
ecdae50
Merge pull request #784 from gameguild-gg/feature/issue-109-approved-…
mathrmartins Oct 10, 2026
141d598
feat(identity): SCIM 2.0 user and group provisioning endpoints (#773)
mathrmartins Oct 10, 2026
eb8821e
Merge pull request #744 from gameguild-gg/chore/add-cla
tolstenko Oct 10, 2026
0561b20
chore(cla): cover internal automation committers and push-allowlisted…
tolstenko Oct 10, 2026
e15ffc1
chore(cla): trigger cla-bot re-run with updated contributor list
tolstenko Oct 10, 2026
025e798
feat(payments): configurable retry/dunning with recovery metrics and …
mathrmartins Oct 10, 2026
948e7cf
fix(auth): consolidate refresh lifecycle and API audit integration
mathrmartins Oct 10, 2026
c0010ad
test(api): dispose SCIM hosts and keep fixture factories independent
mathrmartins Oct 10, 2026
706c608
feat(payments): fraud risk gate with velocity signals and admin review
mathrmartins Oct 11, 2026
03888ad
test(payments): align retry-refusal assertion with the fraud-hold fai…
mathrmartins Oct 11, 2026
46d39b1
Merge pull request #791 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
e280af2
fix(audit): record session-limit eviction and filter permission history
mathrmartins Oct 11, 2026
da011b9
feat(billing): materialize and deliver subscription invoices (#789)
mathrmartins Oct 11, 2026
247e008
feat(billing): external provider management API and migration dry-run…
mathrmartins Oct 11, 2026
df22dd4
chore(cla): cover closeout-bot automation committer (#796)
mathrmartins Oct 11, 2026
bd466ec
Merge remote-tracking branch 'origin/develop' into feature/issue-263-…
mathrmartins Oct 11, 2026
c80591a
Merge remote-tracking branch 'origin/develop' into feature/issue-409-…
mathrmartins Oct 11, 2026
53d1f31
Merge pull request #797 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
3fd5ce6
fix(auth): capture legacy permission mutation snapshots
mathrmartins Oct 11, 2026
bbccf85
test(auth): clarify permission snapshot regression branches
mathrmartins Oct 11, 2026
09f3d8a
feat(shared): ISO-4217 catalog, minor-unit Money, and fail-closed FX …
mathrmartins Oct 11, 2026
1682c33
chore(payments): regenerate dbml and client metadata on the merged tree
mathrmartins Oct 11, 2026
68eed33
Merge commit 'ec7d866a700c8bb004332aded115673e9c64f99c' into feature/…
mathrmartins Oct 11, 2026
04d287c
fix(security): clear remaining CodeQL alerts for the develop->main merge
tolstenko Oct 11, 2026
03543e8
fix(feed): kill /feed blink + parallel loading (was: CLA + feed perf)…
tolstenko Oct 11, 2026
1ca93fc
test(auth): use supported Edit permission in snapshot coverage
mathrmartins Oct 11, 2026
9ba5f4d
Merge commit 'afe1611f6e293df27eb92ec541f5a99758fb9f18' into feature/…
mathrmartins Oct 11, 2026
015d6ba
feat(billing): payment method management with defaults, guards, and e…
mathrmartins Oct 11, 2026
f616465
test(auth): correct default permission snapshot expectation
mathrmartins Oct 11, 2026
aca0b17
Merge commit '8a18f148f2b2d5ee82dd1318a06bcfe4e40cad90' into feature/…
mathrmartins Oct 11, 2026
d6c61df
Merge pull request #794 from gameguild-gg/feature/issue-409-fraud-det…
mathrmartins Oct 11, 2026
46edde2
feat(payments): fail-closed gateway selection, PayPal adapter, and fa…
mathrmartins Oct 11, 2026
02ef0ef
Merge remote-tracking branch 'origin/develop' into feature/issue-413-…
mathrmartins Oct 11, 2026
461158c
test(payments): adapt failover-attribution fixture to the merged frau…
mathrmartins Oct 11, 2026
d7018c6
Merge pull request #800 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
c7c81b0
chore(cla): allowlist bot contributors (dependabot, github-actions, c…
tolstenko Oct 11, 2026
29a279f
feat(audit): add bounded chronological replay core
mathrmartins Oct 11, 2026
64e0ea7
fix(payments): infer hyphenated payment-method tokens and descend cap…
mathrmartins Oct 11, 2026
f76d15b
fix(audit): validate replay collection indices explicitly
mathrmartins Oct 11, 2026
90aa75c
Merge current develop into audit replay core
mathrmartins Oct 11, 2026
40017a7
fix(audit): resolve replay source runner as a Node filesystem path
mathrmartins Oct 11, 2026
95f32c2
Merge pull request #803 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
91c80b5
feat(audit): add bounded server replay snapshots
mathrmartins Oct 11, 2026
55e5f5b
test(subscriptions): enable the simulated Stripe gateway in the integ…
mathrmartins Oct 11, 2026
95f8ac4
fix(audit): satisfy snapshot quality checks with validated construction
mathrmartins Oct 11, 2026
c6bc84b
feat(commerce): rule-driven tiered pricing engine core (#779)
mathrmartins Oct 11, 2026
022790f
Merge current develop pricing delivery for audit replay snapshot veri…
mathrmartins Oct 11, 2026
1bde8cf
Merge pull request #804 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
130a332
Merge remote-tracking branch 'origin/develop' into i413-identity-fix
mathrmartins Oct 11, 2026
7c69bce
test(auth): verify account and shared-IP lockout through HTTP
mathrmartins Oct 11, 2026
6389b26
Merge pull request #807 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
e5acfca
feat(auth): configure verified-email sign-in policy and qualify owner…
mathrmartins Oct 11, 2026
f75ce3d
style(auth): resolve verified-email and inbox quality findings
mathrmartins Oct 11, 2026
2c1347f
feat(commerce): functional promo engine — usage recording, stacking r…
mathrmartins Oct 11, 2026
64486fd
Merge current develop promo delivery for authentication policy qualif…
mathrmartins Oct 11, 2026
a290715
Merge pull request #802 from gameguild-gg/feature/issue-413-gateway-f…
mathrmartins Oct 11, 2026
007e8a8
Merge current develop gateway delivery for authentication policy qual…
mathrmartins Oct 11, 2026
602381a
fix(auth): import Xunit for local sign-in policy option tests
mathrmartins Oct 11, 2026
c67f654
Merge pull request #808 from gameguild-gg/feature/issue-263-audit-cle…
mathrmartins Oct 11, 2026
ecfc427
feat(payments): automated retry queue with attempt history and recove…
mathrmartins Oct 11, 2026
da13736
wip(subscriptions): plan CRUD hardening start (salvage, quota wall)
mathrmartins Oct 11, 2026
afb13b5
feat(subscriptions): plan management hardening — slug generation, ISO…
mathrmartins Oct 11, 2026
e4aea4e
feat(billing): durable pricing-decision ledger with analytics and dri…
mathrmartins Oct 11, 2026
8f89d1a
feat(payments): refund approval workflow, dispute surface, and webhoo…
mathrmartins Oct 11, 2026
b4064bf
chore(openapi): regenerate typed client — trialPeriodDays on plan PUT…
mathrmartins Oct 11, 2026
a9bfb41
Merge remote-tracking branch 'origin/develop' into feature/issue-416-…
mathrmartins Oct 11, 2026
1950e07
fix(subscriptions): escape doc comment (under 200ms) to keep build wa…
mathrmartins Oct 11, 2026
532d459
chore(openapi): refresh client metadata hash at post-merge head (issu…
mathrmartins Oct 11, 2026
99d0401
fix(subscriptions): CI round 1 — construct cache directly in tests, k…
mathrmartins Oct 11, 2026
622cf44
fix(subscriptions): compile the cache test helper (MemoryCache ctor +…
mathrmartins Oct 11, 2026
d7ba735
test(subscriptions): CI-verified sub-200ms bound for the plan compari…
mathrmartins Oct 12, 2026
7ca59ae
Merge pull request #818 from gameguild-gg/feature/issue-416-plan-crud…
mathrmartins Oct 12, 2026
f92c1bc
fix(authz): bulk permission cache expiry envelope so cached allows ca…
mathrmartins Oct 12, 2026
5c62b5e
feat(audit): capture scoped replay snapshots and validate imported by…
mathrmartins Oct 12, 2026
459c6ee
fix(audit): route reversed replay range through matching-name locals …
tolstenko Oct 12, 2026
da0d3ec
feat(auth): wire authentication orchestrator into sign-in flow + GitH…
mathrmartins Oct 12, 2026
6a0b6fa
feat(payments): account credits, subscription gifting and referrals v…
mathrmartins Oct 12, 2026
a8e19d5
fix(client): raise Node heap for tsup build worker
tolstenko Oct 12, 2026
b25b658
fix(client): raise Node heap for tsup build worker
tolstenko Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions .ci-retrigger-268
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
retrigger 1791609622
31 changes: 31 additions & 0 deletions .clabot
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"contributors": [
"tolstenko",
"mathrmartins",
"Aloneking12",
"migmoroni",
"Germano123",
"LMD9977",
"Nominal9977",
"hdorer",
"vikumm",
"alec-o-mago",
"AlexRamosBrazil",
"MichaelOlave",
"closeout-agent",
"gameguild-agent",
"gameguild-closeout",
"gameguild-closeout-agent",
"impl-agent",
"ZCode Agent",
"closeout-bot",
"Agent",
"dependabot[bot]",
"github-actions[bot]",
"github-advanced-security[bot]",
"copilot-pull-request-reviewer[bot]",
"copilot-swe-agent[bot]"
],
"message": "Thanks for your contribution! Before we can review and merge it, the following contributors need to sign our Contributor License Agreement: {{usersWithoutCLA}}. Please read the [CLA](../blob/main/CLA.md) and comment on your PR stating: \"I have read the CLA Document and I hereby sign the CLA\". A maintainer will then add you to the approved contributor list.",
"label": "cla-signed"
}
12 changes: 12 additions & 0 deletions .codacy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
# Keep the original remediation scope visible to Codacy. Exclusion, suppression,
# a local baseline, and an ignored issue are not evidence that a finding is fixed.
# Do not reapply bulk issue ignores. Preserve each finding until its underlying
# behavior is repaired and the relevant scanner verifies the published change.
exclude_paths: []
include_paths:
- "packages/infrastructure/client/src/generated/**"
- "apps/web/src/lib/api/generated/**"
- "apps/api/tests/**"
- "tools/emception/packages/browser/src/emscripten/**"
- "**/*.md"
147 changes: 147 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ trim_trailing_whitespace = true

[*.cs]
indent_size = 4
csharp_prefer_braces = true:warning

[*.{ts,tsx,js,jsx,mjs,cjs}]
indent_size = 2
Expand All @@ -35,3 +36,149 @@ indent_size = 2

[Makefile]
indent_style = tab

# SonarAnalyzer.CSharp staged severities (todo 10, codacy-quality-debt plan).
# Derived from .omo/codacy/csharp-patterns.json (all 131 Codacy patterns; the 45 SonarCSharp
# ones listed here). Staging: security + errorprone-real rules warn (build gate), every
# style/noise rule with findings is silenced until its owning batch fixes the debt.
# AnalysisMode stays AllDisabledByDefault (apps/api/Directory.Build.props) — Sonar analyzers
# still respect .editorconfig severities; disabled-by-default NET analyzers are unaffected.
[*.cs]
# --- Security (warning) ---
# NOTE: SonarSource hotspot rules (S2068, S5443, S5332, S2053, S2245) are DORMANT when
# SonarAnalyzer.CSharp runs standalone via PackageReference — they only fire under the
# SonarQube/SonarCloud Scanner. Severity=warning is set so they gate the build the moment
# a Scanner run activates them. Verified empirically (todo 10): scratch S2068 strings do
# not fire locally; rule + message strings confirmed present in the analyzer DLL.
# S2077 (SQLi) and S4784-4787 do not exist in SonarAnalyzer.CSharp 10.4 — SQLi is covered
# by Semgrep engine on the Codacy side.
dotnet_diagnostic.S2068.severity = warning # hardcoded credentials (hotspot)
dotnet_diagnostic.S5332.severity = warning # insecure URLs (http/telnet/ftp) (hotspot)
dotnet_diagnostic.S5443.severity = warning # publicly writable directories (hotspot)
dotnet_diagnostic.S2053.severity = warning # weak password hashing (hotspot)
dotnet_diagnostic.S2245.severity = warning # weak randomness (hotspot)
# --- ErrorProne-real (warning) ---
dotnet_diagnostic.S2259.severity = warning # null dereference
dotnet_diagnostic.S2589.severity = warning # always-true/false condition
dotnet_diagnostic.S2583.severity = warning # dead branch
dotnet_diagnostic.S3358.severity = none # nested ternary — errorprone-real per plan but
# 274 existing findings; parked like style debt
# until its batch clears them, then escalate to warning# --- Style/noise from the Codacy inventory (none until fixed by owning batch) ---
dotnet_diagnostic.S2360.severity = none # 5952: checkstyle-format
dotnet_diagnostic.S121.severity = none # 5896: control-flow braces
dotnet_diagnostic.S1172.severity = none # 922: unused parameters
dotnet_diagnostic.S2339.severity = none # 699: public member mislabeled
dotnet_diagnostic.S1313.severity = none # 167: tracked in Codacy; format noise
dotnet_diagnostic.S1450.severity = none # 74: field-to-local
dotnet_diagnostic.S3254.severity = none # 63: redundant default
dotnet_diagnostic.S125.severity = none # 52: commented-out code
dotnet_diagnostic.S1118.severity = none # 48: static ctor init
dotnet_diagnostic.S1186.severity = none # 43: empty method (todo 11)
dotnet_diagnostic.S3218.severity = none # 36: static member naming
dotnet_diagnostic.S3257.severity = none # 32: redundant type
dotnet_diagnostic.S3459.severity = none # 24: unassigned field
dotnet_diagnostic.S1301.severity = none # 19: switch vs if
dotnet_diagnostic.S1449.severity = none # 17: parse/culture
dotnet_diagnostic.S3453.severity = none # 15: uninitialized field
dotnet_diagnostic.S131.severity = none # 14: switch default
dotnet_diagnostic.S3253.severity = none # 10: redundant ctor
dotnet_diagnostic.S2737.severity = none # 9: redundant catch
dotnet_diagnostic.S3427.severity = none # 7: overload params
dotnet_diagnostic.S1764.severity = none # 7: identical expressions
dotnet_diagnostic.S1854.severity = none # 6: dead assignment
dotnet_diagnostic.S108.severity = none # 4: empty block
dotnet_diagnostic.S2326.severity = none # 4: unused type param
dotnet_diagnostic.S3875.severity = none # 4: operator overload
dotnet_diagnostic.S3241.severity = none # 4: unusual return type
dotnet_diagnostic.S1244.severity = none # 3: float equality
dotnet_diagnostic.S1226.severity = none # 3: param reintroduced
dotnet_diagnostic.S1994.severity = none # 3: loop var modified
dotnet_diagnostic.S127.severity = none # 2: loop counter in body
dotnet_diagnostic.S3898.severity = none # 2: array named type name
dotnet_diagnostic.S2681.severity = none # 2: nested loop var
dotnet_diagnostic.S2743.severity = none # 2: static type naming
dotnet_diagnostic.S3897.severity = none # 2: array dimension
dotnet_diagnostic.S2197.severity = none # 1: modulo one
dotnet_diagnostic.S2760.severity = none # 1: empty conditional
dotnet_diagnostic.S2955.severity = none # 1: freezing weather
dotnet_diagnostic.S2225.severity = none # 1: ToString override
dotnet_diagnostic.S1117.severity = none # 1: field shadow param
dotnet_diagnostic.S3440.severity = none # 1: redundant qualifier
dotnet_diagnostic.S3237.severity = none # 1: value-returning setter
# --- Style/noise NOT in the Codacy inventory (not reported by Codacy's Sonar config;
# codesmell-level, discovered live during todo 10 iterate-to-green) ---
dotnet_diagnostic.S3928.severity = none # 54: param-name string in ArgumentException
dotnet_diagnostic.S3267.severity = none # 8: loop → Where
dotnet_diagnostic.S3877.severity = none # 4: throw in getter
dotnet_diagnostic.S2139.severity = none # 4: log-or-rethrow
dotnet_diagnostic.S1066.severity = none # 4: mergeable if
dotnet_diagnostic.S6667.severity = none # 2: LogDebug overload
dotnet_diagnostic.S6610.severity = none # 2: StartsWith char overload
dotnet_diagnostic.S6608.severity = none # 2: index-based loop
dotnet_diagnostic.S4136.severity = none # 2: adjacent overloads
dotnet_diagnostic.S2219.severity = none # 2: operator overuse
dotnet_diagnostic.S2094.severity = none # 2: empty type
dotnet_diagnostic.S1694.severity = none # 2: abstract → interface
dotnet_diagnostic.S1210.severity = none # 2: comparison operators
dotnet_diagnostic.S4144.severity = none # 2: identical implementations
# --- Style/noise NOT in the Codacy inventory, discovered live during todo 10 iterate-to-green
# (2635 findings; all codesmell-level, none Security) ---
dotnet_diagnostic.S6964.severity = none # 1222: await before disposal
dotnet_diagnostic.S1144.severity = none # 668: unused private member
dotnet_diagnostic.S927.severity = none # 396: same-name property override
dotnet_diagnostic.S6562.severity = none # 382: DateTime.Today
dotnet_diagnostic.S2699.severity = none # 292: test needs assertion
dotnet_diagnostic.S2325.severity = none # 250: member should be static
dotnet_diagnostic.S6966.severity = none # 212: using without sleep
dotnet_diagnostic.S1135.severity = none # 188: TODO tracking
dotnet_diagnostic.S1481.severity = none # 170: unused local
dotnet_diagnostic.S3878.severity = none # 140: string concat with __
dotnet_diagnostic.S6580.severity = none # 122: LogLevel.Default
dotnet_diagnostic.S5034.severity = none # 114: optional value param
dotnet_diagnostic.S1006.severity = none # 104: multi-line lambda
dotnet_diagnostic.S4581.severity = none # 84: null checked twice
dotnet_diagnostic.S3881.severity = none # 70: IDisposable proper dispose
dotnet_diagnostic.S1133.severity = none # 70: deprecated attribute
dotnet_diagnostic.S6934.severity = none # 56: needless Interlocked
dotnet_diagnostic.S4487.severity = none # 56: unused capacity arg
dotnet_diagnostic.S2925.severity = none # 42: equals checks type
dotnet_diagnostic.S3993.severity = none # 40: custom equality
dotnet_diagnostic.S1075.severity = none # 34: URI not hardcoded
dotnet_diagnostic.S6932.severity = none # 30: name + nameof
dotnet_diagnostic.S1125.severity = none # 24: redundant boolean
dotnet_diagnostic.S1905.severity = none # 20: redundant cast
dotnet_diagnostic.S112.severity = none # 18: decimal literal suffix
dotnet_diagnostic.S3220.severity = none # 16: sequence cast
dotnet_diagnostic.S2971.severity = none # 16: value type IComparable
dotnet_diagnostic.S2930.severity = none # 16: volatile semantics
dotnet_diagnostic.S1215.severity = none # 16: GC.SuppressFinalize
dotnet_diagnostic.S3260.severity = none # 14: explicit class constraint
dotnet_diagnostic.S3236.severity = none # 10: circular dependency warning
dotnet_diagnostic.S3398.severity = none # 8: static method in static class
dotnet_diagnostic.S3265.severity = none # 8: event unsubscription
dotnet_diagnostic.S2365.severity = none # 8: property hiding
dotnet_diagnostic.S6960.severity = none # 6: use auto-property
dotnet_diagnostic.S6931.severity = none # 6: ActivityCreator type
dotnet_diagnostic.S3973.severity = none # 6: goto dispose
dotnet_diagnostic.S3923.severity = none # 6: branch same behavior
dotnet_diagnostic.S3885.severity = none # 6: using without brace
dotnet_diagnostic.S3604.severity = none # 6: initializer to static ctor
dotnet_diagnostic.S2178.severity = none # 6: short-circuit operator
dotnet_diagnostic.S6672.severity = none # 4: LogTrace overload
dotnet_diagnostic.S4035.severity = none # 4: sealed class
dotnet_diagnostic.S3871.severity = none # 4: zero-length array
dotnet_diagnostic.S3626.severity = none # 4: jump nested in conditional
dotnet_diagnostic.S1185.severity = none # 4: redundant base call
dotnet_diagnostic.S4456.severity = none # 2: param in async
dotnet_diagnostic.S3903.severity = none # 2: types in namespace
dotnet_diagnostic.S3444.severity = none # 2: backing field naming
dotnet_diagnostic.S3011.severity = none # 2: reflection bypass
dotnet_diagnostic.S2344.severity = none # 2: enum default mismatch
dotnet_diagnostic.S1939.severity = none # 2: default equality
dotnet_diagnostic.S1199.severity = none # 2: nested code block
dotnet_diagnostic.S1104.severity = none # 1: public field (scratch proof residue, fired live)

# Test fixtures intentionally use fake credentials/permissions (todo 2 excludes them in
# Codacy; local build must not flag them either).
[apps/api/tests/**.cs]
dotnet_diagnostic.S2068.severity = none
6 changes: 4 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,10 @@ EMAILDELIVERY__EVENTS__TOPICARN=
# Notification System (email dispatcher + digest engine tuning — defaults are fine for most deployments)
# Base URL used in email links (unsubscribe, manage preferences). Must be the public web URL.
APP__BASEURL=http://localhost:3000
# DataProtection key ring persists in Postgres (DataProtectionKeys table). Encrypted at rest when
# BOTH of these are set (base64 of the PEM certificate + PEM private key). Blank = plaintext (local dev).
# Durable Data Protection keys require BOTH base64-encoded PEM values in every environment.
# Use a valid RSA certificate (at least 2048 bits) with its matching private key.
# Keep the same certificate/key pair across hosts and restarts, and retain it for historical data.
# Missing or invalid values stop startup; there is no plaintext fallback.
DATAPROTECTION_CERTIFICATE_BASE64=
DATAPROTECTION_CERTIFICATE_KEY_BASE64=
# Email dispatcher sweep tuning (all optional, defaults shown)
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.sh text eol=lf
*.patch text eol=lf whitespace=-blank-at-eol
6 changes: 3 additions & 3 deletions .github/actions/build-candidate/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,15 @@ runs:
echo "tag=candidate-${{ inputs.tree-sha }}-${{ inputs.service }}" >> "$GITHUB_OUTPUT"
echo "built_at=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_OUTPUT"
echo "version=$version" >> "$GITHUB_OUTPUT"
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
- uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
with:
registry: ${{ inputs.registry-host }}
username: ${{ inputs.registry-username }}
password: ${{ inputs.registry-password }}
- name: Build and push candidate
id: build
uses: docker/build-push-action@v6
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ${{ inputs.dockerfile }}
Expand Down
7 changes: 5 additions & 2 deletions .github/actions/setup-dotnet/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ description: Install the pinned .NET SDK and restore its package cache
runs:
using: composite
steps:
- uses: actions/setup-dotnet@v6
- uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6
with:
dotnet-version: 10.0.103
- uses: actions/cache@v6
- name: Prepare certificate for disposable CI key storage
shell: bash
run: bash scripts/ci/prepare-data-protection-test-certificate.sh
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ hashFiles('apps/api/**/*.csproj', 'apps/api/**/*.props', 'apps/api/**/*.targets', 'apps/api/**/NuGet.config') }}
Expand Down
8 changes: 4 additions & 4 deletions .github/actions/setup-node-workspace/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ description: Install the pinned Node and pnpm workspace dependencies
runs:
using: composite
steps:
- uses: pnpm/action-setup@v6
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6
with:
version: 10.0.0
- uses: actions/setup-node@v7
version: 10.34.6
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: "22"
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
- name: Install workspace dependencies
shell: bash
run: pnpm install --frozen-lockfile --ignore-scripts
run: bash scripts/ci/install-and-audit-pnpm.sh
2 changes: 1 addition & 1 deletion .github/actions/setup-playwright/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Cache and install the pinned Chromium browser runtime
runs:
using: composite
steps:
- uses: actions/cache@v6
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ~/.cache/ms-playwright
key: playwright-browsers-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'apps/web/package.json') }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/close-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v11 # v11.0.0
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: 30
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
name: Render contributors without blocking production
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0
- name: Install ffmpeg and gource
Expand All @@ -28,7 +28,7 @@ jobs:
run: |
chmod +x ./contributors/gource.sh
xvfb-run --auto-servernum env OUTPUT_DIR="${RUNNER_TEMP}/gameguild-gource" ./contributors/gource.sh
- uses: actions/upload-artifact@v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: contributors-gource-${{ github.sha }}
path: ${{ runner.temp }}/gameguild-gource
Expand Down
Loading
Loading