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.
Learning completion reward
LiveLearning 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.
| Setting | Current value | Note |
|---|---|---|
| learn.lesson_pass_tokens | 10 | Paid once after the video is watched and its quiz is first passed. Every eligible lesson uses the same fixed +10. |
| learn.quiz_pass_threshold | 70% | Pass mark. Retries allowed, but tokens are paid on the first pass only. |
| learn.daily_token_cap | 150 | Daily ceiling — stops grinding for betting-floor funds. |
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 yetThe 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.
| Setting | Current value | Note |
|---|---|---|
| recovery.token_floor | 100 | Below this, the learning path back is always open. |
| recovery.path | learning | The default route back, and it always exists. |
| gacha.recovery_cost | 50 | Cost of one draw. There is no multi-draw bundle. |
| gacha.pity_threshold | 10 | After 10 draws without a win, the 11th is guaranteed — stated publicly. |
| gacha.rates_public | on | 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
LiveThis drives the transparency panel that the betting screen must show. Read the red block at the top of the page before touching this group.
| Setting | Current value | Note |
|---|---|---|
| display.implied_prob | 1 / 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_edge | 1 − 1 ÷ Σ(1/odds) | The house edge shown to the player. |
| display.round_to | 0.1 percentage points | Rounded for display only, never rounded in the calculation. |
| display.truth_block | always 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 screenPush notification service
Live| Setting | Current value | Note |
|---|---|---|
| push.provider | provider-a | Receives a device token only, never behavioural content. |
| push.cooldown_reminder_time | 20:00 AEST | Once a day, only during the seven-day cooldown. |
| push.cooldown_reminder_topic | learning only | No mention of betting, no countdown of days left. |
| push.betting_related | does not exist | No notification channel leads to the betting simulator. |
| push.daily_cap_per_user | 1 | 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
2You 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| When | Setting | Old → new | Requested by | Approved by |
|---|---|---|---|---|
| 22/07 09:40 | gacha.pity_threshold | 12 → 10 | Marcus Hale · R08 | Aisha Nguyen · R08 |
| 14/07 11:05 | learn.lesson_pass_tokens | 5 → 10 | Jonah Reed · R08 | Marcus Hale · R08 |
| 08/07 16:22 | display.round_to | 1 pp → 0.1 pp | Marcus Hale · R08 | Jonah Reed · R08 |
| 30/06 10:14 | push.daily_cap_per_user | 2 → 1 | Aisha Nguyen · R08 | Marcus Hale · R08 |
| 21/06 08:50 | recovery.token_floor | 50 → 100 | Marcus Hale · R08 | Aisha 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.