SYSTEM ADMIN
/manage/settings

System settings

Four groups of operating settings. Nothing on this page saves directly. Every change creates a request, waits for a different active System admin account to approve it, and only then takes effect — leaving a permanent line in the log at the bottom of the page. Holding another role never grants approval authority here.

This page has no setting for betting odds, and cannot have one

This is the hardest limit in the admin area, so it is written out here rather than left for you to infer. The odds in the simulation come from an external data feed in read-only mode. No setting multiplies, adds to, rounds or overrides them; there is no "event mode"; and there is no per-player or per-group parameter.

The house edge formula below is a DISPLAY formula. It produces the figures a player sees in the transparency panel on the betting screen — that is, it explains the odds that already exist. It is not a setting that generates odds: changing it does not move the odds by a single digit, it only changes how they are explained. Anyone using it as a margin dial has misread what the field does.

The limit sits in the schema, not in the interface: the settings table has no column in the odds domain, and the admin API has no endpoint that writes to it. Hiding a button would not be enough — a hidden button can still be called by hand. This is re-checked every sprint in the safety control audit.

2 requests awaiting approval Settings version: v37 Last applied: 22/07/2026 09:40

Learning completion reward

Live

Learning completion and fixed Showdown milestones are the only ways new tokens enter a wallet. A lesson pays once, after its video and attached quiz are completed; there is no separate video payment to stack with the quiz payment.

SettingCurrent valueNote
learn.lesson_pass_tokens10 Paid once after the video is watched and its quiz is first passed. Every eligible lesson uses the same fixed +10.
learn.quiz_pass_threshold70% Pass mark. Retries allowed, but tokens are paid on the first pass only.
learn.daily_token_cap150 Daily ceiling — stops grinding for betting-floor funds.
The quiz editor reads these values and cannot change them.

Baseline, endline and voluntary surveys do not appear in this table. Their schema has no reward field at all — not a field set to zero — so a settings change cannot turn a measurement task into a token source.

Recovery floor and recovery draw

Not live yet

The floor is the minimum number of tokens at which a player always has a way back, so losing everything never means being pushed out of the product.

SettingCurrent valueNote
recovery.token_floor100 Below this, the learning path back is always open.
recovery.pathlearning The default route back, and it always exists.
gacha.recovery_cost50 Cost of one draw. There is no multi-draw bundle.
gacha.pity_threshold10 After 10 draws without a win, the 11th is guaranteed — stated publicly.
gacha.rates_publicon Rates are always shown to players. There is no off setting.

The recovery draw never applies to a lost Family asset. An asset in the lost state has no way back, not from the admin area and not by changing a setting. No key here can switch that on, because the column it would need does not exist.

House edge formula DISPLAY ONLY

Live

This drives the transparency panel that the betting screen must show. Read the red block at the top of the page before touching this group.

SettingCurrent valueNote
display.implied_prob1 / odds Implied probability — this still includes the house edge.
display.market_normalised_prob(1/odds) ÷ Σ(1/odds) Market-normalised estimate after removing the displayed margin. It is not the true underlying chance and is not a forecast.
display.house_edge1 − 1 ÷ Σ(1/odds) The house edge shown to the player.
display.round_to0.1 percentage points Rounded for display only, never rounded in the calculation.
display.truth_blockalways on, cannot collapse There is no off value.

Checked against the market running on the betting screen. Two options, odds 2.10 and 1.75:
implied = 1/2.10 = 47.6% and 1/1.75 = 57.1% → total 104.8%
house edge = 1 − 1/1.048 = 4.5%
market-normalised estimate for the 2.10 option = 47.6 ÷ 104.8 = 45.5% (not a true underlying chance or a forecast)
long-run expectation = 2.10 × 0.455 − 1 = −4.5%, so 100 tokens staked returns 95.45 on average

If a change to this group leaves those numbers no longer agreeing with each other, the transparency panel starts lying to players. That is why a display-only group still needs two people to approve a change.

Transparency panel · betting screen

Push notification service

Live
SettingCurrent valueNote
push.providerprovider-a Receives a device token only, never behavioural content.
push.cooldown_reminder_time20:00 AEST Once a day, only during the seven-day cooldown.
push.cooldown_reminder_topiclearning only No mention of betting, no countdown of days left.
push.betting_relateddoes not exist No notification channel leads to the betting simulator.
push.daily_cap_per_user1 Hard ceiling. There is no promotions or events channel.

The wording of each notification is not edited here. The content admin writes it and the clinical reviewer approves it; this page only turns the channel on or off and sets the send time. Whoever tunes the infrastructure should not be able to write the words sent to someone in cooldown.

Requests waiting on a second person

2
#CF-0088 · learn.daily_token_cap: 150 → 120 Raised by Marcus Hale (R08) on 27/07 · reason: week 5 data shows token grinding concentrated in the evening, lower the cap to reduce the pressure · waiting on Aisha Nguyen (R08)
Awaiting approval
#CF-0087 · push.cooldown_reminder_time: 20:00 → 18:00 Raised by Jonah Reed (R08) on 25/07 · reason: a late reminder lands in a higher-risk part of the evening · waiting on you

You cannot approve #CF-0088 because you raised it. The requester and the approver have to differ, and that is enforced in the data layer, not in the button.

Settings change log

cannot be edited or deleted
WhenSettingOld → newRequested byApproved by
22/07 09:40gacha.pity_threshold12 → 10Marcus Hale · R08Aisha Nguyen · R08
14/07 11:05learn.lesson_pass_tokens5 → 10Jonah Reed · R08Marcus Hale · R08
08/07 16:22display.round_to1 pp → 0.1 ppMarcus Hale · R08Jonah Reed · R08
30/06 10:14push.daily_cap_per_user2 → 1Aisha Nguyen · R08Marcus Hale · R08
21/06 08:50recovery.token_floor50 → 100Marcus Hale · R08Aisha Nguyen · R08

The log keeps the old value, the new value, the full reason and both names. There is no delete button and no "clear old entries". This is the evidence you check when someone asks whether a setting was quietly changed.