Repository navigation
fix: correct Astra free and Pro feature claims - #797
Conversation
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes Checked all eight changed files against the enforcing access checks and the shared chat/MCP explanation path.
- Conditional access claims: Freeze and gamification explanations now match Pro access or account-level
gamification_free_tiereligibility. - Pro feature list: Removes goal reviews, freezes, and gamification from the Pro unlock list without changing entitlement enforcement or quota behavior.
- Regression coverage: Adds daily-quota and default-plan gate checks, ties explanation assertions to existing behavior tests, and verifies chat/MCP content parity. Focused verification passed all 19 application tests and 4 infrastructure tests; the full suite was not rerun during this review.
gpt-6.1-sol | 𝕏
|
Copy approval for the feature explanation change in ee8ca29 (
Verdict: DISAGREE (high confidence), so the copy is approved. Reasoning: "The new copy accurately states the rule (Pro, or some free accounts via a per-account flag) while removing the internal flag name, which the brand voice forbids; it is short, plain, and unhyped. Astra separately sees the person's profile to answer whether they personally have freezes, so the explanation needn't say how to tell." |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes Reviewed the changes since 6b3d6472, with the full PR diff as context.
- Replaced internal terminology: Expressed freeze and gamification eligibility in product language while preserving availability for Pro and eligible free accounts.
- Removed implementation names: Kept numeric freeze, overdue, and streak limits intact while removing constant identifiers and simplifying the overdue heading.
- Strengthened content checks: Added a guard against internal identifiers in explanation bodies and explicit expected-copy assertions for chat/MCP parity. Focused verification passed 20 application tests and 4 infrastructure tests; the full suite was not rerun.
gpt-6.1-sol | 𝕏
|




Fixes thomasluizon/orbit-tickets#236 (ORB-230).
Astra's embedded explanations described free-tier gamification, streak freezes, and AI goal reviews as Pro unlocks. The content now follows the access checks on
redesign/main.Approach
freezes.md: the plan sentence now reads "Streak freezes are part of Orbit Pro. Some free accounts have them too." (Pro access, or a per-account flag; no internal name is shown to people). Keep automatic coverage wording.gamification.md: the same rule in product language for XP, levels, and achievements: "XP, levels, and achievements are part of Orbit Pro. Some free accounts have them too." The later ticket comment supersedes the original achievements-as-Pro requirement.paygate.md: remove freezes, gamification, and AI goal reviews from the Pro list. Preserve the shipped daily 5/50 quota and completed-habit exclusion, which matchPayGateService.FeatureExplanationDriftTests, plus chat/MCP content parity inFeatureToolsTests. Keeping these assertions beside the enforcing behavior makes a plan change fail alongside its stale claim.No access predicate, quota, database row, DTO, or external interface changed. Both tools still read
IFeatureExplanationService. The build regenerated OpenAPI with no resulting diff.Content audit
frequencies.mdHabitScheduleService.IsHabitDueOnDate, window start/end, remaining completionsnotifications.mdReminderSchedulerServicerelative/scheduled selection andShouldSendScheduledReminderschedule-math.mdDefaultOverdueWindowDaysstreaks.mdComputeStreakAsOf,UserStreakService.LoadStreakDataAsync, calendar fallback, lookback constantai-memory.mdThe corrected claims also apply to the inspected
origin/main: its gamification and automatic-freeze predicates use Pro-or-flag, its goal-review handler consumes the AI quota, and its affected content has the same stale claims. This PR targetsredesign/mainas ordered.Assumptions
The later round-2 instructions govern the copy. Source identifiers remain in provenance metadata.
Test evidence
Before changing tests or content, existing tests passed with the defects present:
After strengthening tests, with the original markdown still present, the same application selection exited 1 with 2 failures and 7 passes; the automatic-freeze selection exited 1 with 1 failure. Red output:
The new list test was also run before the content fix:
After the content fix:
Post-commit verification (all exit 0):
Focused selections were also rerun after the commit with
--no-build: 19 application and 4 infrastructure checks passed. Commit hooks passed formatting, dash, timeless, root-allowlist, and suppression checks; the push hook passed branch protection. No app server or browser was started. Mutation testing and CI monitoring remain with CI and the orchestrator.dotnet build Orbit.slnx: exit 0, zero errors.Manual steps
Copy approved with
/second-opinion(DISAGREE on the claimed defect, posted on this pull request). Normal API deployment. No configuration or database changes required. Confirm deployment through the updateddescribe_featureresponses.