Skip to content

Prod - August 2026 Release 1 - #153

Merged
jmgasper merged 6 commits into
masterfrom
develop
Aug 5, 2026
Merged

Prod - August 2026 Release 1#153
jmgasper merged 6 commits into
masterfrom
develop

Conversation

@jmgasper

@jmgasper jmgasper commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

What was broken
Completed point challenges generated finance winnings, but winning member profiles retained an empty challengePoints summary, so Profiles hid the Points section.

Root cause
Autopilot calls the member challenge-points endpoint with its refresh:member_stats M2M scope. The endpoint accepted only update:user_profiles or all:user_profiles, so automatic synchronization was rejected before point rows could be stored.

What was changed
Allowed refresh:member_stats on the challenge-points update route while preserving the existing profile scopes. Restricted user-token access to administrators and updated the README and Swagger authorization contract.

Any added/updated tests
Added a route contract regression test for the accepted M2M scopes and admin-only user access. Focused route and challenge-point persistence tests, lint, and build pass. The full suite reports 205 passing tests and 28 unrelated existing failures caused by missing bus credentials and outdated Joi error-message expectations.
What was broken

Downloaded profiles showed activity totals that differed from Profiles, including a separate Quality Assurance row and Competitive Programming activity that the UI did not display.

Root cause (if identifiable)

The download flow recalculated activity from challenge winner and resource rows. That logic used different win, submission, grouping, and Data Science rules from the member stats and history data used by Profiles.

What was changed

The download now reads member stats and history through StatisticsService and maps the Development, Design, Testing, and SRM-based Competitive Programming rows with the same grouping and history fallbacks used by Profiles. A history lookup failure falls back to aggregate stats so profile generation can continue.

Any added/updated tests

Added unit coverage for the PM-5793 profile totals, SRM-only Competitive Programming visibility, and overlapping AI Engineering history. The focused tests, lint, and build pass. The full suite has 218 passing tests and the same 17 pre-existing Joi message assertion failures as origin/develop, which has 215 passing tests and those 17 failures.
PM-5793: Align downloaded profile activity stats
PM-5788: Allow Autopilot to sync profile points
What was broken

Downloaded profiles could omit all Topcoder Activity stats after the first PM-5793 change, and rated Data Science paths were not included even when Profiles displayed them.

Root cause (if identifiable)

The service used Promise.allSettled while app-bootstrap replaces the global Promise with Bluebird. Bluebird returns PromiseInspection objects rather than native status/value records, so the mapper received no stats. The first mapper also handled only the legacy tracks and SRM.

What was changed

Resolve required stats and optional history with Bluebird-compatible Promise.all behavior, map native and configured Data Science ratings with Profiles history/count/order rules, and render ratings in PDF activity rows.

Any added/updated tests

Expanded ProfileStats regression coverage for the supplied totals, Data Science and SRM separation, rating selection and ordering, AI de-duplication/tie-breaks, Bluebird/native promise resolution, optional-history fallback, and PDF rating text.
PM-5793: Restore downloaded profile ratings
@jmgasper
jmgasper merged commit 6082c9b into master Aug 5, 2026
8 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