Brand and design · Hi-fi screens · S23 Complete · Complete
Data-binding map: S23 Complete · Complete
Data-binding map of Complete · Complete: every field to its source, and what each required state shows.
Generated by
botgumi-design indexfrom../../screens.json. Edit that file, not this page.
Every field S23 shows and where it comes from.
| Field | Source (endpoint or local state) | Format | Fallback |
|---|---|---|---|
| eyebrow | api GET /sessions/{session_id} kind · session.kind, settlement.replayed |
— | — |
| eyebrow | api POST /sessions/{session_id}/complete replayed |
||
| headline / subline | api POST /sessions/{session_id}/complete headline · settlement.headline / subline (Accept-Language) |
— | complete.headline.<verdict> |
| headline / subline | api POST /sessions/{session_id}/complete subline |
||
| icon + rays | api POST /sessions/{session_id}/complete comparison.verdict · settlement.comparison.verdict |
trophy only for improved |
— |
| before/after | api POST /sessions/{session_id}/complete round1_overall · settlement.round1_overall / round2_overall, durations (CCR-9) |
count-up r1→r2 | — |
| before/after | api POST /sessions/{session_id}/complete round2_overall |
||
| session delta | api POST /sessions/{session_id}/complete comparison.overall_delta · settlement.comparison.overall_delta, duration_delta_ms |
±N, secs_delta |
— |
| session delta | api POST /sessions/{session_id}/complete comparison.duration_delta_ms |
||
| lost points | api POST /sessions/{session_id}/complete comparison.key_points_lost[] · comparison.key_points_lost[] (article language) |
warning banner | hidden when empty |
| XP tile | api POST /sessions/{session_id}/complete xp.awarded · settlement.xp.awarded |
count-up +N |
— |
| streak tile | api POST /sessions/{session_id}/complete streak.current · settlement.streak.current, streak_incremented |
+1 only when incremented and not replayed |
— |
| streak tile | api POST /sessions/{session_id}/complete streak_incremented |
||
| ability tile | api POST /sessions/{session_id}/complete ability_after · ability_after − ability_before; ability_sample_count < 3 → "building baseline n/3" |
separate from session delta | — |
| ability tile | api POST /sessions/{session_id}/complete ability_sample_count |
||
| level card | api POST /sessions/{session_id}/complete level_after.level · level_after.level / title (Accept-Language) / xp_into_level / xp_for_next; animation from level_before |
bar fill 900 ms | — |
| level card | api POST /sessions/{session_id}/complete level_after.title |
||
| level card | api POST /sessions/{session_id}/complete level_after.xp_into_level |
||
| level card | api POST /sessions/{session_id}/complete level_after.xp_for_next |
||
| level card | api POST /sessions/{session_id}/complete level_before.level |
||
| XP lines | api POST /sessions/{session_id}/complete xp.breakdown[] · xp.breakdown[] (CCR-10), missing improve shown struck through |
— | — |
| cap / repeat notes | api POST /sessions/{session_id}/complete xp.daily_cap_hit · xp.daily_cap_hit, xp.repeat_discount |
complete.xp.cap_hit / .repeat |
— |
| cap / repeat notes | api POST /sessions/{session_id}/complete xp.repeat_discount |
||
| weekly quests | api POST /sessions/{session_id}/complete weekly_quests.quests[] · settlement.weekly_quests.quests[] (titles Accept-Language) |
bars | — |
| next focus | api POST /sessions/{session_id}/complete next_suggestion.title · settlement.next_suggestion.title / instruction (Accept-Language) |
— | — |
| next focus | api POST /sessions/{session_id}/complete next_suggestion.instruction |
||
| level-up overlay | api POST /sessions/{session_id}/complete level_after.level · level_after.level > level_before.level |
overlay | — |
| achievement sheet | api POST /sessions/{session_id}/complete achievements_unlocked[] · achievements_unlocked[] (Accept-Language), plan_day_completed |
sheet per item, queued | — |
| achievement sheet | api POST /sessions/{session_id}/complete plan_day_completed |
||
| replayed banner | api POST /sessions/{session_id}/complete replayed · settlement.replayed, settled_at |
date + time | — |
| replayed banner | api POST /sessions/{session_id}/complete settled_at |
||
session.attempts[round=1].duration_ms |
api GET /sessions/{session_id} attempts[].duration_ms · From the board's data-bind; no row in data-binding.md yet. |
||
session.attempts[round=2].duration_ms |
api GET /sessions/{session_id} attempts[].duration_ms · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.ability_after (− ability_before) |
api POST /sessions/{session_id}/complete ability_after · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.ability_sample_count |
api POST /sessions/{session_id}/complete ability_sample_count · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.achievements_unlocked[0].description |
api POST /sessions/{session_id}/complete achievements_unlocked[].description · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.achievements_unlocked[0].title |
api POST /sessions/{session_id}/complete achievements_unlocked[].title · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.comparison.duration_delta_ms |
api POST /sessions/{session_id}/complete comparison.duration_delta_ms · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.comparison.key_points_lost[] (article language) |
api POST /sessions/{session_id}/complete comparison.key_points_lost[] · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.headline (Accept-Language) |
api POST /sessions/{session_id}/complete headline · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.level_after.level |
api POST /sessions/{session_id}/complete level_after.level · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.level_after.level + title |
api POST /sessions/{session_id}/complete level_after.level · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.level_after.level + title |
api POST /sessions/{session_id}/complete level_after.title |
||
settlement.level_after.xp_into_level / xp_for_next |
api POST /sessions/{session_id}/complete level_after.xp_into_level · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.level_after.xp_into_level / xp_for_next |
api POST /sessions/{session_id}/complete level_after.xp_for_next |
||
settlement.level_after.xp_total / xp_for_next |
api POST /sessions/{session_id}/complete level_after.xp_total · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.level_after.xp_total / xp_for_next |
api POST /sessions/{session_id}/complete level_after.xp_for_next |
||
settlement.next_suggestion.instruction |
api POST /sessions/{session_id}/complete next_suggestion.instruction · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.plan_day_completed |
api POST /sessions/{session_id}/complete plan_day_completed · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.replayed + settled_at |
api POST /sessions/{session_id}/complete replayed · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.replayed + settled_at |
api POST /sessions/{session_id}/complete settled_at |
||
settlement.round2_overall |
api POST /sessions/{session_id}/complete round2_overall · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.streak.current + streak_incremented |
api POST /sessions/{session_id}/complete streak.current · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.streak.current + streak_incremented |
api POST /sessions/{session_id}/complete streak_incremented |
||
settlement.subline (Accept-Language) |
api POST /sessions/{session_id}/complete subline · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.weekly_quests.quests[0] |
api POST /sessions/{session_id}/complete weekly_quests.quests[] · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.weekly_quests.quests[1] |
api POST /sessions/{session_id}/complete weekly_quests.quests[] · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.weekly_quests.quests[2] |
api POST /sessions/{session_id}/complete weekly_quests.quests[] · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[0].type |
api POST /sessions/{session_id}/complete xp.breakdown[].type · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[0].xp |
api POST /sessions/{session_id}/complete xp.breakdown[].xp · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[1].type |
api POST /sessions/{session_id}/complete xp.breakdown[].type · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[1].xp |
api POST /sessions/{session_id}/complete xp.breakdown[].xp · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[2].type |
api POST /sessions/{session_id}/complete xp.breakdown[].type · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[2].xp |
api POST /sessions/{session_id}/complete xp.breakdown[].xp · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[3].type |
api POST /sessions/{session_id}/complete xp.breakdown[].type · From the board's data-bind; no row in data-binding.md yet. |
||
settlement.xp.breakdown[3].xp |
api POST /sessions/{session_id}/complete xp.breakdown[].xp · From the board's data-bind; no row in data-binding.md yet. |
Binds on the boards
The data-bind values across every state.
session.attempts[round=1].duration_mssession.attempts[round=2].duration_mssession.kindsettlement.ability_after (− ability_before)settlement.ability_sample_countsettlement.achievements_unlocked[0].descriptionsettlement.achievements_unlocked[0].titlesettlement.comparison.duration_delta_mssettlement.comparison.key_points_lost[] (article language)settlement.comparison.overall_deltasettlement.headline (Accept-Language)settlement.level_after.levelsettlement.level_after.level + titlesettlement.level_after.xp_into_level / xp_for_nextsettlement.level_after.xp_total / xp_for_nextsettlement.next_suggestion.instructionsettlement.next_suggestion.titlesettlement.plan_day_completedsettlement.replayed + settled_atsettlement.round1_overallsettlement.round2_overallsettlement.streak.current + streak_incrementedsettlement.subline (Accept-Language)settlement.weekly_quests.quests[0]settlement.weekly_quests.quests[1]settlement.weekly_quests.quests[2]settlement.xp.awardedsettlement.xp.breakdown[0].typesettlement.xp.breakdown[0].xpsettlement.xp.breakdown[1].typesettlement.xp.breakdown[1].xpsettlement.xp.breakdown[2].typesettlement.xp.breakdown[2].xpsettlement.xp.breakdown[3].typesettlement.xp.breakdown[3].xp
States
- Loading: From states.md (Complete): skeleton blocks while
/completeruns (idempotent; safe to retry) - Empty: From states.md (Complete): —
- Error (retryable / not): From states.md (Complete): Retry (same Idempotency-Key) · fatal: 409 precondition → back to the feedback of the missing round
- Offline: From states.md (Complete): queued; shows "will settle when online"