Site map
One file names every page, theme, hotkey, URL value, heading, table, column, message, count line, state word, setting and feature flag. bun run cli site reads it with Bun.markdown (GFM tables and task lists), checks it against the routes and the stylesheet, and writes src/lib/site.gen.ts. The nav, every page title, heading, key hint and table label, the theme switch, both key handlers and every localStorage key come from that file, so a name or key changes here or through the CLI, never in a component.
bun run cli site # check this file, the routes and the generated file
bun run cli site list [pages|themes|keys|urls|sections|tables|columns|messages|stats|states|settings|flags]
bun run cli site set pages /ip name="IP log" nav="IP log"
bun run cli site set keys theme key=c
bun run cli site set settings theme.default value=system
bun run cli site set sections wall.movers title="TOP LINE MOVERS"
bun run cli site set urls "/desk?open=picks" opens="Telegram on its ALGO PICKS tab"
bun run cli site set tables ds.grid label="Odds grid"
bun run cli site set columns market short=MKT
bun run cli site set messages quotes.none text="NO QUOTES YET"
bun run cli site set states status.offline word=OFFLINE
bun run cli site flag theme.contrast off # untick the box, then regenerate
bun run cli site --write # regenerate after a hand edit
bun run cli contract runs the same check, so the pre-commit hook and the gate fail on a stale src/lib/site.gen.ts.
The check also reads every component and route. It fails on a key hint, heading, subtitle, page link label, URL value, storage key, Kpi label, count word or state word written into the code instead of read from here, on a panel name a WebMCP tool writes in its own words, and on a row that nothing renders.
Pages
One name per page. It is the browser title (Name · Sports Operations), the page heading, and the Page column in the goal. Nav is the shorter label in the header. Key jumps to the page from anywhere.
| Route | Name | Nav | Key | Description |
|---|---|---|---|---|
/ | Overview | Overview | 1 | Feed status, every desk surface with its key and a deep link, the security model, words and fields. |
/desk | Desk | Desk | 2 | Board, line movers, bet feed, wager graphs and the data screens, on the replay tape or the live sidecar. |
/security | Security model | Security | 3 | The measured rules behind every flag: integer cents, the weblog join, alert twins, self-bets and edge pins. |
/ip | IP log | IP log | 4 | Manager getWebLog rows by agent and customer, with the scheduled extract and session renewal. |
/health | Health | Health | 5 | Server checks, token age, the last ticker and board pulls, R2, Telegram, the sidecar and the data dictionary. |
/agents | Agent settings | Agent settings | - | Private agreements, agent contacts and separate manual balance observations. |
/directory | People directory | People directory | - | Private customer and employee contacts, bot references, exact account evidence and workspace sessions. |
/credentials | Environment & keys | Environment & keys | - | Encrypted project variables, keys and passwords with explicit reveal and operator access. |
/workbench | Styles & checks | Styles & checks | - | Theme previews, repository verification records, Bun feature usage and sample controls. |
/docs | Docs | Docs | 6 | The repo docs, rendered from markdown with Bun.markdown at build time. |
/docs/<slug> | Doc | - | - | One published doc with its outline. The title is the doc's own heading. |
Themes
The order is the order c cycles through. system resolves to dark or light from the operating system, and to contrast when it asks for more contrast.
| Theme | Label | Note |
|---|---|---|
system | System | Follows prefers-color-scheme and prefers-contrast |
dark | Dark | The :root palette in src/styles.css |
light | Light | [data-theme="light"] |
contrast | Contrast | [data-theme="contrast"]: black ground, white text, bright lines |
Hotkeys
global keys work on every page. desk keys work on the desk only and may not reuse a global key. A key never fires while typing in a field, with Ctrl, Alt or Cmd held, or on auto-repeat.
| Action | Scope | Key | What |
|---|---|---|---|
theme | global | c | Cycle the theme: System, Dark, Light, Contrast |
keys | global | ? | Shortcut sheet: every key on this page |
close | global | Esc | Close the top panel or sheet |
names | desk | n | Team names: short ↔ long |
odds | desk | o | Odds format: American → Decimal → Asian (HK) → Prediction ¢ |
devig | desk | d | Devig calculator for the selected game |
window | desk | w | Wager window: 15M → 1H → 4H → 24H |
odds-tab | desk | s | Odds snapshot for the selected game |
screen.4c | desk | b | 4C board: rotation and HANDLE. Expand a line for the move graph: each print is TOWARD, AGAINST, or FLAT, and the session slot is SEALED or UNSEALED |
screen.grid | desk | g | Odds grid: HANDLE, SHARP % and off-market, then each book's price |
screen.f402 | desk | f | F402 ticker: SCORE on each wager. Expand for the LOGIN rows and who MATCHES |
screen.accounts | desk | a | Accounts: SCORE. Expand for LOGIN rows, SESSIONS and who MATCHES |
screen.positions | desk | p | Positions: HANDLE per side, SHARP % and EXCH |
screen.patterns | desk | m | Pattern flags. Expand for each named account's SCORE, LOGINS and MATCH |
screen.alerts | desk | l | Alerts and the thresholds that fire them |
screen.security | desk | e | Security: SCORE, LOGINS, SESSIONS, IPS and MATCH. Expand for the rows |
telegram | desk | t | Telegram notifications and turn-ins: people, routes, digests and acks for the sidecar bot |
review | desk | r | Sharp Review: roster, positions, performance, bubble |
URL state
Every search value a link may carry. /desk drops any value not listed here, screen values must match the screen.* hotkeys, and the check fails on a link in the code whose value is not a row. <id> means any id the page validates itself.
| URL | Opens |
|---|---|
/desk?screen=4c | 4C board |
/desk?screen=grid | Odds grid |
/desk?screen=f402 | F402 ticker |
/desk?screen=accounts | Accounts |
/desk?screen=positions | Positions |
/desk?screen=patterns | Pattern flags |
/desk?screen=alerts | Alerts and rules |
/desk?screen=security | Security |
/desk?open=telegram | Telegram notifications and turn-ins |
/desk?open=picks | Telegram on its ALGO PICKS tab |
/desk?open=review | Sharp Review |
/desk?open=keys | Shortcut sheet |
/desk?open=devig | Devig calculator |
/health?d=<id> | One data dictionary entry (src/lib/api-data-dictionary.ts) |
Sections
Every heading and subtitle on a page, as it prints. Components call section("id") (src/lib/sections.ts); {name} is filled in by the component, and a table with the same id takes its label from here, so a panel and its table never have two names. - means none.
Pages
| Section | Route | Title | Subtitle |
|---|---|---|---|
capture.002 | /security | Wager | - |
capture.003 | /security | Alert | - |
capture.012 | /security | Visual annotations · local to this inspector | - |
capture.018 | /security | Timing relative to alert | - |
capture.024 | /security | Evidence needed before scoring | - |
capture.027 | /security | Exchange depth for this stake | - |
capture.051 | /security | Sharper-book price comparison | - |
capture.061 | /security | Alert comparison lab | - |
capture.066 | /security | Real wager comparisons | - |
capture.086 | /security | Estimated net value · | - |
capture.100 | /security | Archived board · | - |
overview.grade | / | Live rotation grade | - |
overview.board | / | Board and lines | - |
overview.wagers | / | Wagers and accounts | - |
overview.risk | / | Risk and security | - |
overview.automation | / | Automation | - |
overview.ops | / | Ops | - |
overview.model | / | Security model | - |
overview.words | / | Words | One label, one color, one use. The same word means the same thing on every screen and in Telegram. |
overview.fields | / | Fields | Counts and rates over stored rows. The count is never a second stored column. |
security.windows | /security | Windows | - |
security.timing | /security | Timing graph | - |
security.match | /security | Twin match | The views join an ALERT to an Internet row on login and cents. They do not join on a ticket id. |
security.edges | /security | View edges | Where the warehouse views cut, and what the join leaves out. |
security.proof | /security | View test | These rows are the SQL fixture. They prove the views. They are not the published book. |
security.pins | /security | Edge pins | - |
security.screen | /security | Security screen | - |
security.words | /security | Words | - |
ip.source | /ip | - | Manager getWebLog · live renew via System/renewToken |
notfound.main | - | Nothing here | This address is not a page on the desk. Every page is one of these: |
error.main | - | Something went wrong | - |
Health
| Section | Route | Title | Subtitle |
|---|---|---|---|
health.server | /health | SERVER CHECKS | LIVE · /_serverFn getHealth |
health.api | /health | API STATUS | RECORDED AUDIT · {date} |
health.dictionary | /health | DATA DICTIONARY | - |
health.feed | /health | - | {feed} |
health.tables | /health | DESK TABLES | - |
health.jobs | /health | SCHEDULED JOBS | BUN.CRON · ONE RUN AT A TIME · NEXT FIRE IN ET |
health.archive | /health | ARCHIVE PIPELINE | {target} · {codec} NDJSON · PARTITIONED BY UTC HOUR |
health.log | /health | HEALTH LOG | CHECK REPORTS + STATUS CHANGES · THIS SESSION · ET |
Desk wall
| Section | Route | Title | Subtitle |
|---|---|---|---|
wall.left | /desk | LIVE BOARD | - |
wall.right | /desk | SIGNALS | - |
wall.handle | /desk | MARKET HANDLE | SHARE OF 24H HANDLE |
wall.handle.sport | /desk | - | {sport} · LEAGUES |
wall.board | /desk | LIVE BOARD | {games} · ROT · SCORE · LINE |
wall.bets | /desk | BET FEED | LAST {window} |
wall.ratings | /desk | RATINGS | TIMING VS LINE MOVES · LIVE |
wall.logs | /desk | LOGS | - |
wall.movers | /desk | TOP LINE MOVERS | - |
wall.alerts | /desk | ALERT FEED | - |
wall.sharps | /desk | SHARP DESK | CLICK FOR REVIEW |
wall.ticker | /desk | SHARP INDEX | - |
Desk screens and overlays
| Section | Route | Title | Subtitle |
|---|---|---|---|
overlay.telegram | /desk | TELEGRAM | - |
overlay.devig | /desk | DEVIG | - |
overlay.keys | /desk | SHORTCUTS | - |
overlay.review | /desk | SHARP REVIEW | REPLAY {clock} |
overlay.screen | /desk | DATA SCREEN | REPLAY {clock} |
overlay.review.roster | /desk | ROSTER | Every account the desk treats as sharp: score ≥ {cut} unless demoted, plus manual promotions. Score is graded CLV, beat rate, placement, stake and straights, shrunk toward lifetime until today's sample is large enough. Expand for open tickets. |
overlay.review.consensus | /desk | SHARP CONSENSUS | Open sharp straights by game and side: how many sharps and how much sharp risk are on it, how much of that risk the best exchange can take, whether other sharps hold the other side, and whether the line has moved toward them since they bet. |
overlay.review.tickets | /desk | SHARP TICKETS | Each sharp's wagers: price taken vs the line now, placement grade, CLV and line-move timing. Ticket opens the book snapshot; account opens the profile; team opens the event breakdown. |
overlay.review.performance | /desk | HOW THEY'RE DOING | Wagers placed in the last {window}: settled P/L and ROI from final scores, CLV and beat rate from graded straights. Ranked by P/L, then CLV; every header sorts. |
overlay.review.bubble | /desk | BUBBLE | Accounts within ±{band} of the {cut} cut, or with confidence under {confidence} where today's tape and lifetime disagree across the cut, plus every manual override. PROMOTE forces sharp, DEMOTE forces not sharp, RESET returns to the score. Overrides apply to the sharp desk, SHARP filter, sharp share, sharp money index, Telegram sharp wagers and data screen segments; saved in this browser. |
overlay.review.overrides | /desk | MANUAL OVERRIDES | Desk decisions in force, newest first. |
screen.4c.board | /desk | 4C BOARD | Every tracked line. Rotation is the join to the 4C board and the ticker. Expand a game for per-book prices, the book's position, tickets, flags and which tickets landed on each print. |
screen.grid.board | /desk | ODDS GRID | Both sides of every tracked market at {shown} of {total} books: away over home, over over under. OPEN, BEST, AVG and HOLD read only the shown books. BOOKS picks the books, the row order and best odds by book. Boxed green = best price on that side; amber = stale. |
screen.f402.tape | /desk | F402 TICKER | The 24H wager tape with the wall's shared filter. SCORE is the account's sharp score. COLUMNS can add LOGINS, SESSIONS, IPS, MATCH and LAST LOGIN. Expand a wager for the LOGIN rows behind the count and the accounts that share an IP. |
screen.accounts.table | /desk | ACCOUNTS | Replay wager tape: rated, segmented and tagged by the same pattern rules as the alerts. 24H columns are the replay window; LIFE columns are synthetic seeded history plus today. Pattern tags on this table are not a published count. Expand for the LOGIN rows, the accounts that share an IP, window vs lifetime, and recent tickets. |
screen.positions.table | /desk | POSITIONS | The book's open straight-wager position per market, recomputed every tick: handle and tickets per side, worst-case result, the side the book needs, sharp share, how much of the heavier sharp side an exchange can take, and recent handle. Rows flash when handle changes. Parlays are excluded; settled games drop out. |
screen.patterns.rules | /desk | PATTERN RULES | Named rules with the thresholds in effect (edit them in ALERTS & RULES). The counts are flags on the replay tape, not a published book. The same rules label accounts, fill this table, tag tickets and fire alerts. |
screen.patterns.flags | /desk | FLAGS | Each flag names its rule, the measurement that fired it and the tickets behind it. The rows are the replay tape. Expand for the named accounts (SCORE, LOGINS, SESSIONS, MATCH) and the ticket evidence. |
screen.alerts.thresholds | /desk | THRESHOLDS | Saved in this browser. Changes apply on the next tick; newly crossed thresholds post to the alert feed and, if enabled, Telegram (THRESHOLDS purpose). |
screen.alerts.active | /desk | ACTIVE NOW | Thresholds crossed at the current tick. Expand for the measured value against its limit. |
screen.alerts.fired | /desk | FIRED | Thresholds and pattern flags as they newly fire, newest first. Conditions already true when the desk loaded are under ACTIVE NOW, not here. |
screen.security.shared-ip | /desk | SHARED-IP CLUSTERS | SHARED IP rule: accounts placing from the same address in the 24H tape. HIGH when the IP is VPN or datacenter. Addresses are RFC 5737 documentation ranges. |
screen.security.channels | /desk | CHANNEL MIX | Wagers and risk by intake channel across the replay tape. |
screen.security.access | /desk | ACCOUNT ACCESS | Sharp score, login count, distinct sessions, distinct IPs and how many other accounts match those addresses. Expand a row for the LOGIN events and the matching accounts. COLUMNS can add LAST LOGIN, the IP list, tickets and CLV. |
screen.alerts.off-market | /desk | OFF-MARKET LINE | - |
screen.alerts.heavy | /desk | HEAVY ACTION | - |
screen.alerts.position | /desk | POSITION | - |
screen.alerts.pattern-rules | /desk | PATTERN RULES | - |
screen.alerts.routing | /desk | ROUTING | - |
overlay.bet.ticket | /desk | TICKET #{id} | - |
overlay.bet.grade | /desk | - | GRADE = EV OF THE PRICE TAKEN AGAINST THE DEVIGGED FAIR PRICE WHEN IT WAS PLACED (A AT OR BETTER THAN FAIR · C ≈ STANDARD −110 VIG · F WORSE THAN −7.5%) · CLV = VIG-FREE MOVE OF THAT FAIR PRICE TO THE CLOSE · BOOKS ON A DIFFERENT NUMBER ARE ADJUSTED PER POINT |
overlay.book.history | /desk | - | LINE HISTORY{market} · TIME, FROM, TO, SIZE |
overlay.event.breakdown | /desk | - | CLICK FOR BREAKDOWN |
overlay.event.accounts | /desk | - | TOP ACCOUNTS · CLICK FOR PROFILE |
overlay.profile.tickets | /desk | - | RECENT TICKETS · {beat}/{total} MOVED TOWARD THEM BY THE CLOSE · CLICK A TICKET FOR THE BOOK SNAPSHOT |
overlay.telegram.turnins | /desk | - | PHONE TICKETS AND WAGERS ≥ {amount} POST TO THE TURN-INS GROUP · AGENTS ACK BY REPLYING TO THE MESSAGE OR SENDING “ACK #TICKET” · PAST THE ACK WINDOW THE TICKET ESCALATES ONCE TO THE OWNERS |
overlay.telegram.picks.loading | /desk | - | LOADING ALGO PICKS FROM THE SIDECAR |
overlay.telegram.picks.off | /desk | - | ALGO PICKS COME FROM THE SIDECAR · {reason} |
overlay.telegram.picks | /desk | - | THE SIDECAR SENDS A PICK ONCE THE ALGO'S OWN PICKS BEAT THE CLOSE · AGENTS MARK PLACED OR PASS ON THE TELEGRAM CARD · /ALGO IN CHAT FOR THE BOARD |
overlay.telegram.chats-local | /desk | - | CHAT IDS MUST ALSO BE IN TELEGRAM_ALLOWED_CHATS ON THE SERVER · GROUP IDS START WITH −100 · THE TOKEN NEVER REACHES THIS PAGE |
overlay.telegram.people | /desk | - | PEOPLE · OWNERS COME FROM TELEGRAM_ALLOWED_CHATS · AGENTS SEE ONLY THEIR OWN CUSTOMERS |
overlay.telegram.chats | /desk | - | CHATS · ADD THE BOT TO A FORUM SUPERGROUP, THEN APPROVE IT HERE OR RUN /approve THERE |
overlay.telegram.routes | /desk | - | ROUTES · ONE PER PURPOSE AND CHAT OR TOPIC · TURN-INS ALSO REACH EACH AGENT'S DM |
overlay.telegram.mutes | /desk | - | MUTES · TURN-INS ARE NEVER MUTED |
overlay.telegram.tags | /desk | - | CUSTOMER CALLS · FROM SHARP REVIEW, /tag OR THE TAG BUTTONS |
Tables
Every table and list the user can sort and group, by the id its layout is saved under (desk.table.<id>.v1). The table kit prints the label in its toolbar, so a table is named here and nowhere else, and the check fails on a table id in the code that is not a row.
| Table | Label |
|---|---|
wall.ips | IP addresses |
wall.lanes | Account lanes |
wall.weblog | Weblog |
bet.books | Book snapshot |
wall.alerts | Alert feed |
wall.bets | Bet feed |
wall.board | Live board |
wall.handle | Market handle |
wall.logs | Logs |
wall.movers | Line movers |
wall.ratings | Ratings |
wall.sharp | Sharp desk |
wall.tape | Wager tape |
wall.timeline | Moves and bets |
ds.access | Account access |
ds.accounts | Accounts |
ds.acct-tickets | Recent tickets |
ds.active | Active thresholds |
ds.board | 4C board |
workbench-sample-v1 | Sample records |
ds.channel-tickets | Channel tickets |
ds.channels | Channel mix |
ds.evidence | Evidence |
ds.f402 | F402 ticker |
ds.fired | Fired alerts |
ds.flag-accts | Accounts named on this flag |
ds.flags | Pattern flags |
ds.game-tickets | Game tickets |
ds.grid | Odds grid |
ds.legs | Ticket legs |
ds.login-rows | Login rows |
ds.match-rows | Matching accounts |
ds.positions | Positions |
ds.quotes | Book quotes |
ds.sharedip | Shared IPs |
ds.side | Side accounts |
event.accounts | Top accounts |
event.sides | Sides and markets |
event.tickets | Event tickets |
wall.games | All games |
wall.games.bets | Wagers on this line |
notify.outbox | Outbox |
notify.picks | Algo picks |
notify.opportunities | Opportunity review |
notify.turnins | Turn-ins |
devig.methods | Devig methods |
wall.snapshot | Odds snapshot |
profile.tickets | Profile tickets |
wall.patterns | Correlation patterns |
sr.bubbles | Bubble sharps |
sr.consensus | Sharp consensus |
sr.perf | Sharp performance |
sr.roster | Sharp roster |
sr.tickets | Sharp tickets |
Columns
Every table column, by the name the code asks for (col("market"), src/lib/columns.ts). One column prints one label on every table: the sort, group and column menus and screen readers use Label. A header narrower than the label prints Short instead (screen readers still hear Label), and widening the column brings the full label back. Phone cards print Short when there is one. A dialog's figure row labels each figure by its column too (<Kpi col="risk" …>), and {name} in a label is filled by the dialog. - means the label always fits.
| Column | Label | Short |
|---|---|---|
account | ACCOUNT | ACCT |
accounts | ACCOUNTS | ACCTS |
ack-rate | ACK RATE | - |
acked | ACKED | - |
after | AFTER | - |
after-gap | AFTER GAP | - |
age-ack | AGE / ACK | - |
agent | AGENT | - |
ahead | AHEAD | - |
alert | ALERT | - |
alerts | ALERTS | - |
at | @ | - |
avg | AVG | - |
avg-clv | AVG CLV · STRAIGHTS | - |
avg-gap | AVG GAP | - |
avg-grade | AVG GRADE | - |
avg-rating | AVG RATING | - |
away | AWAY | - |
beat | BEAT | - |
beat-close | BEAT CLOSE | - |
beat-life | BEAT LIFE | - |
before | BEFORE | - |
best | BEST | - |
best-ev | BEST EV | - |
bet-ev | BET EV | - |
bet-line | BET LINE | - |
bet-price | BET PRICE | - |
bet-type | BET TYPE | - |
book | BOOK | - |
book-class | BOOK CLASS | - |
book-needs | BOOK NEEDS | - |
book-rank | BOOK RANK | - |
books | BOOKS | - |
budget | BUDGET | - |
change | CHANGE | - |
channels | CHANNELS | - |
check | CHECK | - |
city | CITY | - |
class | CLASS | - |
close-ev | CLOSE EV | - |
close-line | CLOSE LINE | - |
close-price | CLOSE PRICE | - |
clv | CLV | - |
clv-24h | CLV 24H | - |
clv-life | CLV LIFE | - |
clv-life-synthetic | CLV LIFE* | - |
clv-trend | CLV TREND | - |
code | CODE | - |
confidence | CONFIDENCE | CONF |
confirm | CONFIRM | - |
customers | Customers | - |
data | Data | - |
delta-cons | Δ CONS | - |
destination | DESTINATION | - |
detail | DETAIL | - |
early | EARLY | - |
endpoint | ENDPOINT | - |
endpoint-path | ENDPOINT / PATH | - |
ev-at-bet | EV AT BET | - |
ev-at-close | EV AT CLOSE | - |
event | EVENT | - |
evidence | EVIDENCE | EVID. |
exch | EXCH | - |
expected-response | EXPECTED RESPONSE | - |
fair | FAIR | - |
fair-a | FAIR A | - |
fair-at-bet | FAIR @ BET | - |
fair-at-close | FAIR @ CLOSE | - |
fair-b | FAIR B | - |
first | FIRST | - |
first-book | FIRST BOOK | - |
first-seen | FIRST SEEN | - |
flag | FLAG | - |
flags | FLAGS | - |
game | GAME | - |
games | GAMES | - |
grade | GRADE | GR |
graded | GRADED | N |
handle | HANDLE | - |
handle-a | HANDLE A | - |
handle-b | HANDLE B | - |
hit | HIT | - |
hold | HOLD | - |
home | HOME | - |
hub | HUB | - |
hubs | HUBS | - |
ip | IP | - |
ip-list | IP LIST | - |
ip-risk | IP RISK | - |
ip-type | IP · TYPE | - |
ips | IPS | - |
job | JOB | - |
kind | KIND | - |
lag | LAG | - |
last | LAST | - |
last-login | LAST LOGIN | - |
last-poll | HEALTH OBSERVATION | - |
late | LATE | - |
latency | LATENCY | - |
league | LEAGUE | LG |
leg | LEG | - |
level | LEVEL | - |
life-rating | LIFE RATING | LIFE |
lifetime-synthetic | LIFETIME* | - |
line | LINE | - |
line-risk | LINE / RISK | - |
line-since | LINE SINCE | - |
login | Login | - |
logins | LOGINS | - |
market | MARKET | MKT |
markets | MARKETS | - |
match | MATCH | - |
median-ack | MEDIAN ACK | - |
method | METHOD | - |
move | MOVE | - |
move-gap | MOVE / GAP | - |
move-since | MOVE SINCE | - |
moves | MOVES | - |
moves-first | MOVES FIRST | - |
moves-today | MOVES TODAY | - |
next | NEXT | - |
note | NOTE | - |
now | NOW | - |
odds | ODDS | - |
of-side | OF SIDE | - |
off-market | OFF MARKET | OFF MKT |
open | OPEN | - |
open-exp | OPEN EXP | - |
operation | Operation | - |
orphan | ORPHAN | - |
other | OTHER | - |
outstanding | OUTSTANDING | - |
over-sla | OVER {min} MIN | - |
override | OVERRIDE | - |
p50 | P50 | - |
p95 | P95 | - |
parlay | PARLAY | - |
passed | PASSED | - |
pick | PICK | - |
picks-sent | PICKS SENT | - |
pl | P/L | - |
pl-24h | P/L 24H | - |
pl-bettor | P/L (BETTOR) | - |
placed | PLACED | - |
position | POSITION | - |
prefix | PREFIX | - |
price | PRICE | - |
price-a | PRICE A | - |
price-b | PRICE B | - |
pts-vs-close | PTS VS CLOSE | - |
purpose | PURPOSE | - |
rank | RANK | # |
rate | RATE | - |
rating | RATING | - |
reason | REASON | - |
request | REQUEST | - |
result | RESULT | - |
retain | RETAIN | - |
risk | RISK | - |
risk-24h | RISK 24H | - |
roi | ROI | - |
roi-24h | ROI 24H | - |
roi-life | ROI LIFE | - |
roi-life-synthetic | ROI LIFE* | - |
rot | ROT | - |
rows | ROWS | - |
rule | RULE | - |
runner | RUNNER | - |
schedule | SCHEDULE | SCHED |
score | SCORE | - |
segment | SEGMENT | - |
segment-tags | SEGMENT · TAGS | - |
self-bet | SELF-BET | - |
sent | SENT | - |
session | SESSION | - |
sessions | SESSIONS | - |
settled | SETTLED | - |
severity | SEVERITY | - |
share | SHARE | - |
shared | SHARED | - |
shared-ip | Shared IP | - |
sharp | SHARP | - |
sharp-pct | SHARP % | - |
sharp-risk | SHARP RISK | - |
sharp-share | SHARP SHARE | - |
sharps | SHARPS | - |
side | SIDE | - |
side-a | SIDE A | - |
side-b | SIDE B | - |
side-market | SIDE · MARKET | - |
signal | SIGNAL | - |
sla | SLA | - |
source | SOURCE | - |
span | SPAN | - |
sport | SPORT | - |
stake | STAKE | - |
stale | STALE | - |
state | STATE | - |
status | STATUS | - |
stream | STREAM | - |
subject | SUBJECT | - |
table | TABLE | - |
tag | TAG | - |
this-side | THIS SIDE | - |
ticket | TICKET | - |
tickets | TICKETS | TKT |
tickets-24h | TICKETS 24H | TKT 24H |
time | TIME | - |
timing | TIMING | - |
timing-mix | TIMING MIX | - |
to-win | TO WIN | - |
to-win-24h | TO WIN 24H | - |
today | TODAY | - |
top-league | TOP LEAGUE | - |
trend | TREND | - |
turn-ins | TURN-INS | - |
type | TYPE | - |
velocity | VELOCITY | - |
volume | VOLUME | - |
vs-close | VS CLOSE | - |
vs-cut | VS CUT | - |
wager | WAGER | - |
wager-taken | WAGER · TAKEN | - |
wagers | WAGERS | - |
what | WHAT | - |
when | WHEN | - |
who | WHO | - |
why | WHY | - |
window-24h | 24H WINDOW | - |
worst-case | WORST CASE | - |
zone | ZONE | - |
Messages
Every empty and loading line, by id: what a table, list or panel prints when it has nothing to show. Components call msg("id", vars) (src/lib/messages.ts); {name} is filled in by the component. One text has one row, so two screens that say the same thing share it.
| Message | Text |
|---|---|
accounts.none | NO ACCOUNTS |
accounts.none-match | NO ACCOUNTS MATCH |
accounts.none-named | NO NAMED ACCOUNTS |
alerts.none-24h | NO ALERTS IN 24H · REAL MOVES POST HERE |
alerts.none-crossed | NO THRESHOLD CROSSED · LIMITS IN ALERTS & RULES |
alerts.none-fired | NOTHING FIRED YET · LOWER A THRESHOLD TO SEE ONE |
alerts.none-match | NO ALERTS MATCH |
alerts.none-over | NOTHING OVER THRESHOLD |
bet.no-grade | NO GRADE · LEG IS NOT ON A TRACKED MARKET |
book.moves-none-held | NO MOVES · HELD THE NUMBER |
book.moves-none-market | NO MOVES ON THIS MARKET |
books.none-quoted | NO BOOKS QUOTED |
devig.need-prices | ENTER TWO VALID PRICES |
event.none | NO WAGERS LOGGED ON THIS EVENT |
event.none-24h | NO WAGERS LOGGED ON THIS EVENT IN THE 24H TAPE |
evidence.none | NO EVIDENCE |
evidence.none-ticket | NO TICKET-LEVEL EVIDENCE · THE REASON ABOVE IS THE MEASUREMENT |
flags.none | NO FLAGS |
flags.none-rule | NO FLAGS FOR THIS RULE |
games.none | NO GAMES ON THE BOARD |
games.none-match | NO GAMES MATCH |
games.none-tracked | NO TRACKED GAMES IN {where} |
games.none-tracked-all | NO TRACKED GAMES IN ALL MARKETS |
graph.no-prints | NO PRINTS ON THIS LINE |
graph.no-wagers | NO WAGERS ON THIS 4C LINE |
graph.no-weblog | NO WEBLOG ROWS FOR THIS SESSION |
graph.no-window-wagers | NO WAGERS IN THIS WINDOW |
health.first-check | RUNNING FIRST CHECK… |
health.passing | Last completed report: {ok}/{n} checks passed; not an availability measurement |
health.unreachable | Health endpoint unreachable · {error} |
ip.extract-loading | Loading the latest extract… |
ip.extract-none | No scheduled extract yet |
ip.extract-status | Extract {pass} · {written} written · {skipped} unchanged · {rows} rows · {at} |
ip.none | Your search returned no results |
ip.session | Session {life} |
ip.session-refreshing | Session {life} · refreshing |
ip.shared-none | No shared addresses in the lake yet |
ips.none-shared | NO SHARED IPS |
ips.none-shared-account | NO OTHER ACCOUNT SHARES THESE IPS |
kit.capped | SHOWING {limit} OF {total} · NARROW THE SEARCH |
legs.none | NO LEGS |
level.none | NOTHING AT THIS LEVEL |
lines.best-none | {book} has the best price on no line that matches |
lines.none-search | NO LINES MATCH THE SEARCH |
lines.none-search-tabs | NO LINES MATCH THE SEARCH OR TABS |
logins.none-24h | NO LOGIN ROWS IN THE 24H TAPE |
logins.none-account | NO LOGIN IN THE 24H TAPE |
logs.idle | LOGS IDLE |
moves.none-history | NO MOVES IN HISTORY |
moves.none-window | NO MOVES IN WINDOW |
patterns.none-window | NO CORRELATION PATTERNS IN THE CURRENT WINDOW |
patterns.not-evidence | NOT EVIDENCE FOR ANY PATTERN RULE |
positions.none | NO POSITION |
positions.none-game | NO OPEN POSITION |
positions.none-open | NO OPEN POSITIONS |
quotes.none | NO QUOTES |
ratings.none | NO RATINGS YET · NEW WAGERS AND RE-RATES POST HERE |
rules.loading | DESK RULES LOADING |
security.none-confirm | No confirm on the published security feed. A confirm is the closest Internet twin of the same login and stake inside 6 seconds. |
security.none-late | No late pair on the published security feed. A late pair is the closest Internet twin more than 6 seconds away and still inside 60. |
security.none-orphan | No orphan alert on the published security feed. An orphan is an ALERT with no Internet twin of the same login and stake inside 60 seconds. |
security.none-pair | No pair on the published security feed. A pair is an ALERT and its closest Internet twin inside 60 seconds. |
security.none-publish | No pairs on this publish. |
security.none-self-bet | No self-bet on the published security feed. A self-bet is a non-ALERT row over {min} whose agent id equals the customer login. |
security.unlisted | {count} on the published security feed. The latest listed pairs do not include one. |
security.waiting-count | This count is waiting on the next ticker publish. |
security.waiting-pairs | Pair bars are waiting on the next ticker publish. |
sharps.none | NO SHARP ACCOUNTS |
sharps.none-cut | NO ACCOUNTS NEAR THE CUT |
sharps.none-open | NO OPEN SHARP STRAIGHTS |
sharps.none-overrides | NO OVERRIDES · EVERY SEGMENT COMES FROM THE SCORE |
sharps.none-tickets | NO SHARP TICKETS MATCH |
straights.none-open | NO OPEN STRAIGHTS |
tags.none | NO PATTERN LABELS |
telegram.calls-none | NO CUSTOMER CALLS |
telegram.chats-none | NO CHATS YET |
telegram.mutes-none | NO MUTES |
telegram.outbox-empty | OUTBOX EMPTY · MESSAGES APPEAR AS RULES FIRE |
telegram.picks-none | NO PICKS SENT YET · THE ALGO IS ON PAPER UNTIL ITS RECORD BEATS THE CLOSE |
telegram.registry-loading | LOADING THE SIDECAR REGISTRY… |
telegram.registry-off | PEOPLE AND ROUTES LIVE ON THE SIDECAR BOT · {reason} |
telegram.turnins-none | NO TURN-INS YET · THEY POST AS PHONE AND LARGE TICKETS ARRIVE |
tickets.none-24h | NO TICKETS IN THE 24H TAPE |
tickets.none-game-24h | NO TICKETS ON THIS GAME IN THE 24H TAPE |
tickets.none-side | NO TICKETS ON THIS SIDE |
timeline.none | NO MOVES OR BETS ON THIS LINE |
wagers.none | NO WAGERS |
wagers.none-24h | NO WAGERS IN 24H |
wagers.none-filter | NO WAGERS MATCH THE FILTER |
wagers.none-game-market | NO WAGERS ON THIS GAME AND MARKET |
wagers.none-last | NO WAGERS IN THE LAST {window} |
wagers.none-match-last | NO WAGERS MATCH IN THE LAST {window} |
wagers.none-window | NO WAGERS MATCH IN THIS WINDOW |
weblog.none-window | NO WEBLOG EVENTS IN THIS WINDOW |
workbench.no-sample-records | No sample records |
Stats
Every count line: the words printed beside a bold value. Components render <Stat id="…" b={…} v={…} /> (src/components/desk/labels.tsx). A {name} passed in b prints bold, and a missing value prints the empty dash; a {name} passed in v prints plain. The same count reads the same on every screen, so {n} TICKETS is one row.
| Stat | Text |
|---|---|
bet.amount | RISK {risk} · TO WIN {win} |
bet.first-move | FIRST MOVE {t} |
bet.last-move | LAST MOVE {t} |
bet.pre | 5 MIN BEFORE {move} |
bet.since | SINCE {move} |
bet.stable | STABLE {before} BEFORE · {after} AFTER |
book.market | THIS MARKET {market} |
chart.day | 24H {handle} · {tickets} TICKETS · PEAK {peak}/H |
count.accounts | {n} ACCOUNTS |
count.active | {n} ACTIVE |
count.ahead | {n} AHEAD OF A MOVE · {min} MIN |
count.clusters | {n} CLUSTERS |
count.fired | {n} FIRED |
count.flags | {n} FLAGS |
count.handle | {n} HANDLE |
count.line-moves | {n} LINE MOVES |
count.lines | {n} LINES |
count.risk | {n} RISK |
count.rows | {n} rows |
count.sharp | {n} SHARP |
count.tickets | {n} TICKETS |
count.wager | {n} WAGER |
count.wagers | {n} WAGERS |
devig.fair | FAIR {a} / {b} |
event.last-move | LAST MOVE {t} · {from} → {to} · {ago} AGO |
graph.in-window | {n} INSIDE THE {min}M WINDOW |
graph.off | {n} OFF THE NUMBER |
graph.on-line | {n} ON THIS LINE |
line.4c | 4C {open} → {now} |
line.history | LINE HISTORY · {market} · {side} |
line.now | NOW {line} |
line.open | OPEN {line} |
line.path | LINE {open} → {now} |
pill.4c | 4C {state} |
pill.desk | DESK {clock} |
pill.f402 | F402 {state} |
pill.sidecar | SIDECAR {state} |
position.need | NEED {need} · NET {net} · LIAB {a} {aLiab} / {b} {bLiab} |
score.breakdown | SCORE {score} = {today}% TODAY ({raw} FROM {n} GRADED STRAIGHTS) + {life}% LIFETIME {prior} |
security.replay-self-bets | {n} REPLAY SELF-BETS |
security.ticker-confirms | {n} TICKER CONFIRMS ≤{s}s |
security.ticker-late | {n} TICKER LATE <{s}s |
security.ticker-orphans | {n} TICKER ORPHANS |
security.ticker-self-bets | {n} TICKER SELF-BETS |
sharp.composite | COMPOSITE {line} · {fair}% |
sharp.gap | GAP {gap} |
sharp.gap-fair | GAP {gap} · {cents}¢ FAIR |
sharp.our | OUR {line} |
sharps.bubble | BUBBLE {n} |
sharps.count | SHARPS {n} |
sharps.cut | CUT {cut} |
sharps.open-risk | OPEN SHARP RISK {risk} |
sharps.pl | P/L {pl} · ROI {roi} |
sharps.sides | SIDES WITH SHARPS {n} |
wall.avg-clv | AVG CLV {clv} |
wall.handle-24h | HANDLE 24H {handle} · {tickets} TICKETS |
wall.sharp-index | SHARP INDEX {n} ACTIVE · {games} GAMES |
wall.vs-prior | VS PRIOR {window} {change} |
States
Every status word: the one-word state a pill, chip or source tag prints, and the words a WebMCP tool answers with. A word row is display text, so components read it with state("status.live") (src/lib/states.ts) and a literal "LIVE" in a component or tool fails the check. A value row is a value in the code (a type union, a cutoff), and src/lib/states.test.ts confirms the code answers with exactly those words. One word names one row.
| State | Word | Kind | Note |
|---|---|---|---|
segment.sharp | SHARP | value | Sharp score at or above the sharp cut (SHARP_CUT, src/desk/sharp-roster.ts). |
segment.square | SQUARE | value | Sharp score below the watch cut. |
segment.watch | WATCH | value | Sharp score at or above the watch cut (WATCH_CUT) and below the sharp cut. |
status.approved | APPROVED | word | The chat is approved to receive messages from the sidecar bot. |
status.checking | CHECKING | word | The first health check has not answered yet. |
status.degraded | DEGRADED | word | At least one server health check warned and none failed. |
status.down | DOWN | word | A health check failed, or a recorded API audit found the endpoint not answering. |
status.dry-run | DRY RUN | word | No bot token and no sidecar bot: messages are previewed, not sent. |
status.final | FINAL | word | The game has ended. |
status.gap | GAP | word | A recorded API audit found the endpoint answering with a gap from the expected contract. |
status.late | LATE | word | A turn-in has waited past its ack SLA without an ack. |
status.live | LIVE | word | Streaming now: the feed is live, or the game is in play. |
status.local-replay | LOCAL REPLAY | word | The health page reads the local replay, not a deployed sidecar. |
status.not-live | NOT LIVE | word | The feed is configured but not streaming; the desk shows the last tape. |
status.offline | OFFLINE | word | The sidecar is not connected. |
status.ok | OK | word | A turn-in is inside its ack SLA. |
status.operational | OPERATIONAL | word | Every server health check passed. |
status.pregame | PREGAME | word | The game has not started. |
status.replay | REPLAY | word | The desk is replaying the recorded tape, not a live source. |
status.sidecar | SIDECAR | word | The data came from, or the job runs on, the sidecar process. |
status.stale | STALE | word | A replay health source answered, but not recently. |
status.tick | TICK {n} | word | The sidecar is connected; {n} is its last tick. |
status.token-set | TOKEN SET | word | A Telegram bot token is set on the server; the chip shows the bot name once it answers. |
status.up | UP | word | A recorded API audit found the endpoint answering as expected. |
Copy
Every other piece of text a person reads or hears: button and tab labels, options, tooltips, placeholders, screen-reader text and inline words. Components call copy("id") (src/lib/copy.ts); {name} is filled by the component. Text that names a heading, column, count, status or empty state belongs in that table instead. bun run cli site add copy <id> text="…" adds a row in order.
| Copy | Text |
|---|---|
telegram.category | Send {kind} alerts |
repos.unavailable | Repository check feed could not be read. |
repos.refresh | Refresh repository checks |
repos.description | Branding and metadata checks for registered repositories. Only changes are checked; repeated failures stay quiet. |
repos.observed | Last observed: {time} |
capture.001 | Evidence for alert {v0} |
capture.004 | SYNTHETIC LAB |
capture.005 | ADAPTER INPUT |
capture.006 | MEASURED SAMPLE |
capture.007 | Stake |
capture.008 | · Internet minus alert |
capture.009 | unavailable |
capture.010 | {v0}s |
capture.011 | . Timing proximity alone does not establish the same market or an exploit. |
capture.013 | Show marks and alignment |
capture.014 | Connect quote snapshots |
capture.015 | Timing mark (seconds) |
capture.016 | Probability mark (%) |
capture.017 | Marks are review notes, not provider observations. They reset when another wager is selected. |
capture.019 | No verified alert-to-wager timing link. |
capture.020 | Alert at zero; Internet ticket at {v0} seconds. |
capture.021 | Internet ticket |
capture.022 | Zero is the alert. Negative means the Internet ticket arrived first. Absolute wager timestamp: |
capture.025 | Comparison inputs present. Independent provenance and settlement review still required. |
capture.026 | No edge, arbitrage or abuse score is calculated from incomplete evidence. |
capture.028 | No matched exchange snapshots. Liquidity is unknown, not zero. |
capture.029 | At wager |
capture.030 | Now |
capture.031 | Coverage unknown |
capture.032 | {v0} of {v1} covered |
capture.033 | {v0} {v1} stake coverage |
capture.034 | No full-stake blended price available |
capture.035 | Full-stake blended decimal price {v0} |
capture.036 | Time and market eligible under supplied evidence. |
capture.037 | Time or market ineligible. |
capture.038 | Top level: |
capture.039 | size unknown |
capture.040 | {v0} quoted units |
capture.041 | at |
capture.042 | . Units |
capture.043 | asserted as stake |
capture.044 | unverified |
capture.045 | Deeper level |
capture.046 | unknown |
capture.047 | units at |
capture.048 | asserted additional |
capture.049 | additional size unverified |
capture.050 | Quoted capacity is not guaranteed execution. Top level and additional depth stay separate. |
capture.052 | {v0} American price {v1} at wager and {v2} now. Two snapshots only. |
capture.053 | Implied probability in percent, before removing margin. Two same-market snapshots; the connecting line does not reconstruct intervening moves. Opening price unavailable. |
capture.054 | No eligible sharper-book snapshots on both sides of the wager. Opening price and intervening movements are unavailable. |
capture.055 | Telegram comparison draft |
capture.056 | HTML templates v1. Preview only; no destination or send action. No customer, chat or bot fields are included. |
capture.057 | Draft format |
capture.058 | Comparison review |
capture.059 | Liquidity review |
capture.062 | Synthetic $500 wager against a $25 top quote. Add deeper capacity to see why top price and full-stake price differ. This does not use or change live records. |
capture.063 | Remove deeper capacity |
capture.064 | Add $475 deeper capacity |
capture.065 | Real wager comparisons |
capture.067 | Private Fantasy402 spool and recorded 4C observations. Canonical identities, provider time units, depth and exact fee evidence must pass review before an estimate appears. |
capture.068 | Venue fee references · checked October 10, 2026 |
capture.069 | Public schedules are reference evidence, not an assessment for your account or selected market. Maker/taker treatment, contract units, execution grouping, settlement and account charges still need confirmation. |
capture.070 | Kalshi event-contract schedule |
capture.071 | · market multipliers and rounding apply. |
capture.072 | Polymarket protocol fees |
capture.073 | · market parameters and product jurisdiction must match. |
capture.074 | Novig fee schedule |
capture.075 | · trade type, league, channel and fill VWAP matter. |
capture.076 | Reading private sources… |
capture.077 | Load real wagers |
capture.078 | Operator unlock is available in Desk → Telegram. |
capture.079 | distinct wagers · |
capture.080 | quote observations in the last two UTC day partitions · read |
capture.081 | · showing the latest 100 wagers |
capture.082 | Wager |
capture.083 | Provider time text: |
capture.084 | Reviewed identity: {v0} |
capture.085 | Absolute time and market identity have not been reviewed. |
capture.087 | expected profit after |
capture.088 | assessed costs. Proportional two-sided sharp probability |
capture.089 | Model estimate for buying this selection at full gross stake. This is not a guaranteed profit, a hedge calculation or an executed fill. Retained book position stays separate. |
capture.090 | Web access and IP references |
capture.091 | Weblog summary observed |
capture.093 | . These are account associations, not a verified wager session or wager-time IP. |
capture.094 | No associated IP evidence available. |
capture.095 | References use a keyed hash. A shared IP does not establish shared identity. No web-session link has been inferred. |
capture.096 | No real wagers stored. Samples are not substituted. |
capture.099 | Close capture |
capture.101 | Time context only: the pictured market and quote are unverified. WebP thumbnail first; full size loads only on request. |
comparison.captureWager | Capture before wager |
comparison.captureNow | Latest capture for wager |
comparison.captureMissing | No capture within 20 minutes before this time. Later images cannot fill the gap. |
comparison.captureContext | Wager {v0} · {v1} · capture {v2} seconds before comparison time. |
capture.102 | Show thumbnail |
capture.103 | Load full image |
capture.104 | Archived {v0} board at {v1} |
capture.105 | Capture unavailable. Close and reopen to retry. |
capture.106 | Full image |
capture.107 | Thumbnail |
capture.108 | Loading private capture… |
account.open-tip | Open profile |
bet.at-close | AT BET {t} · AT CLOSE NOW |
bet.fair | FAIR {placed}% → {close}% · {source} |
bet.grade-tip | EV at bet {ev}% · CLV {clv}% |
bet.legs | {n}-LEG |
bet.open-sr | Open ticket placed at |
bet.open-tip | Open ticket: book snapshot at bet and close |
bet.taken | TAKEN |
bet.this-ticket | THIS TICKET |
book.avg-gap-tip | Mean distance from this book's number to the sharp composite |
book.book-line | BOOK {line} |
book.composite-line | COMPOSITE {line} |
book.fair-cents | {cents}¢ fair |
book.lag-steps | {n} STEP |
book.leads | LEADS |
book.moves-first-tip | Share of market number changes this book printed on the same step |
book.off-sharp | OFF SHARP |
book.open-tip | {book} · open book |
book.pt | {n} pt |
books.any | Any |
books.best | Best odds by book |
books.best-note | Show only the lines where a book has the best price. |
books.books | Books |
books.kind-row | {kind} books |
books.kinds | Book types |
books.menu | Books that display |
books.menu-title | BOOKS THAT DISPLAY |
books.no-limits | The feed has no posted limits yet, so there is no limit filter. |
books.order | Order the rows |
books.reset | Reset |
books.summary | BOOKS {shown}/{total} |
brand.home | , home |
chart.activity | ACTIVITY |
chart.books-moved | {n} BOOKS MOVED |
chart.cumulative | CUMULATIVE |
chart.everyone-else | EVERYONE ELSE |
chart.flow-label | Wager volume timeline |
chart.hourly | HOURLY HANDLE |
chart.key | KEY {keys} |
chart.line-history | Line history |
chart.line-moves | LINE MOVES |
chart.minus-1h | −1H |
chart.minus-2h | −2H |
chart.sharp-accounts | SHARP ACCOUNTS |
chart.signal-tip | Signal score |
chart.wagers-label | Wagers per period |
common.add | ADD |
common.all | ALL |
common.back | BACK |
common.clear | Clear |
common.close | CLOSE |
common.columns | COLUMNS |
common.default | DEFAULT |
common.even | EVEN |
common.line | LINE |
common.ml | ML |
common.none | NONE |
common.now | NOW |
common.off | OFF |
common.on | ON |
common.open | OPEN |
common.refresh | REFRESH |
common.reset | RESET |
common.revert | REVERT |
devig.ev-kelly | EV · ¼ KELLY |
devig.hint | Enter both sides of a two-way market |
devig.method | Devig method |
devig.not-price | NOT A PRICE |
devig.on-side | ON SIDE |
devig.price-a | Side A price |
devig.price-b | Side B price |
devig.side-a | A |
devig.side-b | B |
devig.test | TEST A PRICE |
devig.test-hint | e.g. +105, 2.05, 0.95, 49¢ |
devig.test-label | Price to test |
devig.vs-mult | VS MULTIPLICATIVE FAIR |
docs.all | All docs |
docs.lede-drawn | when the app is built and drawn with the same tokens as every screen. Each one is proven by the gate. |
docs.lede-parsed | These pages are the repo's own docs, parsed by |
docs.missing | No doc named “{slug}”. |
docs.table | Table |
docs.task-done | done |
docs.task-open | open |
ds.account-foot | 24H ROI = SETTLED P/L ÷ SETTLED RISK ({settled} SETTLED, {open} OPEN). CLV AND BEAT FROM {graded} GRADED STRAIGHTS. *LIFETIME IS SYNTHETIC HISTORY SEEDED PER ACCOUNT + TODAY. |
ds.all-rules | ALL RULES |
ds.all-rules-sub | Every flag on the replay tape. These counts are not published. |
ds.best-price | (best price) |
ds.channel-acct-tip | {n} wagers · {risk} |
ds.consensus-foot | CONSENSUS = MEDIAN DEVIGGED (MULTIPLICATIVE) FAIR ACROSS BOOKS ON THE CURRENT NUMBER · {fair}% |
ds.first-seen | FIRST SEEN {date} · {days} DAYS |
ds.flag-n | n={n} |
ds.flag-rule | RULE {rule} · {note} |
ds.game-detail | Game detail |
ds.game-detail-open | GAME DETAIL ↗ |
ds.game-detail-tip | Game detail: every ticket and the line |
ds.if-wins | IF IT WINS BOOK {result} |
ds.league-tabs | League |
ds.lifetime-tip | Synthetic history plus today's settled tickets |
ds.market-tabs | Market |
ds.match-many | {field} · {accounts} SHARE AN IP |
ds.match-one | {field} · {accounts} SHARES AN IP |
ds.open-wall | OPEN ON WALL ↗ |
ds.open-wall-tip | Close the screen and open this line on the wall |
ds.positions-totals | {handle} OPEN HANDLE · {worst} SUM OF WORST CASES |
ds.profile | PROFILE ↗ |
ds.replay-self-tip | Accounts on this replay tape whose customer equals the agent. This is separate from the published self-bet count. |
ds.reset-defaults | RESET DEFAULTS |
ds.reset-panes | RESET PANES |
ds.reset-panes-tip | Reset the data screen's pane sizes |
ds.route-feed | Post to the wall's alert feed |
ds.route-telegram | Send through Telegram (THRESHOLDS purpose; preview until live) |
ds.search | Search the data screen |
ds.search-hint | Search every tab: account, agent, team, ROT, league, IP, ticket… |
ds.security-rules | WHOLE SECONDS · CLOSEST TWIN INSIDE {pair}s IS A CONFIRM · CLOSEST TWIN INSIDE {look}s AND PAST {pair}s IS LATE · TICKER SELF-BET IS A NON-ALERT OVER {min} WITH AGENT = LOGIN |
ds.segment-group | Segment |
ds.side-totals | {tickets} TKT · {handle} HANDLE · {liability} LIABILITY |
ds.stale | (stale) |
ds.tab-high | high |
ds.th.chase-rate | CHASE rate |
ds.th.chase-window | CHASE window |
ds.th.cobet-times | CO-BET times |
ds.th.cobet-window | CO-BET window |
ds.th.follow-min | FOLLOW min |
ds.th.follow-rate | FOLLOW rate |
ds.th.follow-window | FOLLOW window |
ds.th.heavy-floor | Min handle for shares |
ds.th.heavy-min | Window |
ds.th.heavy-pct | One-side share |
ds.th.heavy-usd | Handle on one side |
ds.th.imbalance | Worst-case loss |
ds.th.leader-bets | LEADER min bets |
ds.th.leader-move | LEADER move |
ds.th.leader-rate | LEADER rate |
ds.th.leader-window | LEADER window |
ds.th.off-cents | Price vs consensus |
ds.th.off-cents-tip | Devigged fair distance from the median book |
ds.th.off-ml | Moneyline off |
ds.th.off-pts | Spread/total line off |
ds.th.px-imbalance | Exchange imbalance |
ds.th.px-imbalance-tip | abs(THIS SIDE − OTHER SIDE) / (THIS SIDE + OTHER SIDE) on an exchange. THIS SIDE is the tracked side. |
ds.th.sharp-share | Sharp share of side |
ds.th.steam-accounts | STEAM accounts |
ds.th.steam-books | STEAM books |
ds.th.steam-window | STEAM window |
ds.ticket-snapshot | TICKET SNAPSHOT ↗ |
ds.tracking-tip | Tracking {side}{total} |
ds.trend-tip | Trend {trend} |
event.away-from | away from |
event.chart | Line history with wagers |
event.counts | {rated} rated · {graded} graded · {sharp} from sharp accounts |
event.dot-label | Ticket #{id}, {time}, {account}, {risk} on {pick} |
event.dot-since | · line since {way} pick |
event.dot-tip | #{id} {time} · {account} · {risk} on {pick} · {timing}{since} |
event.grade-tip | Mean placement grade of every ticket on this event |
event.line-move | LINE MOVE |
event.live | LIVE · {status} · {away}–{home} |
event.share-tip | {pct}% of {market} handle |
event.sharp-short | {pct} SH |
event.show-all | SHOW ALL |
event.tickets-all | ALL TICKETS · {n} |
event.tickets-hint | · CLICK A TICKET FOR THE BOOK SNAPSHOT |
event.tickets-side | TICKETS ON THIS SIDE · {shown} OF {total} |
event.timing-note | TIMING = WHEN EACH LEG LANDED AGAINST THIS MARKET'S LINE MOVES · RE-RATED EVERY TICK |
event.toward | toward |
event.wagers-on | , wagers on {label} |
feed.4c-tip | Replaying the recorded 4C board snapshot. The 4C line is not joined to the tape. |
feed.desk-tip | Replay clock started {clock} |
feed.f402-tip | Replaying the recorded Fantasy402 ticket tape |
feed.sidecar-clock | Bun sidecar replay clock |
feed.sidecar-last | Last sidecar event: {op} |
feed.status | Feed status |
filter.accounts | Accounts |
filter.any-grade | ANY GRADE |
filter.any-ip | ANY IP |
filter.any-risk | ANY RISK |
filter.any-source | ANY SOURCE |
filter.any-timing | ANY TIMING |
filter.any-type | ANY TYPE |
filter.bet-type | Bet type |
filter.clear | Clear filters |
filter.grade | Grade or better |
filter.grade-a | GRADE A |
filter.group | Wager filters |
filter.ip-type | IP type |
filter.min-risk | Minimum risk |
filter.or-better | {g} OR BETTER |
filter.search | Search wagers |
filter.search-hint | Account, agent, IP, ticket |
filter.source | Source |
filter.timing | Line-move timing |
focus.book | {wagers} on the published book. Ticket rows are not on this feed. |
focus.book-waiting | The published book is not on the feed yet. Ticket rows are not on this feed. |
focus.duplicate-note | Each bar is the alert wager, then the Internet wager. The gap is whole seconds. The alert keeps its closest twin of the same login and stake. |
focus.join-note | Weblog rows are a separate feed, so this page publishes no join count. |
focus.money-note | The header wager total is the published book. |
focus.place-note | Hosting pins are a separate feed, so this page publishes no place count. |
focus.volume-note | VolumeAmount stays on each spool row. This page publishes no volume count. |
games.balanced | BALANCED |
games.expand-hint | CLICK, ENTER OR SPACE EXPANDS · ESC COLLAPSES |
games.fair-ours-tip | Fair adjusted onto our number |
games.first-bet | FIRST BET |
games.flat | FLAT |
games.inside | INSIDE |
games.need | NEED {side} |
games.open-ticket-tip | Open ticket |
games.shared-with | SHARED WITH {accounts} |
games.signal-tip | Signal {signal} |
games.volume-tip | {handle} side handle · {tickets} tickets |
globe.network | Betting network globe |
globe.pins | Hosting pins: {pins} |
grade.tip | Placement grade {grade}: EV against the devigged fair price when the wager was placed |
health.api-caption | Endpoint paths, request headers and shapes, expected responses, and recorded status |
health.api-note | Expected contracts and dated observations. These rows do not poll the APIs; current feed health is in Server checks. |
health.auto | AUTO 15S {on} |
health.check-now | CHECK NOW |
health.checking | CHECKING… |
health.days | {n} DAYS |
health.definitions | ({n} definitions) |
health.dictionary-note | Field meanings, types, units and validation from the checked-in clients. These definitions contain no private payload values. Unverified provider behavior is labeled. |
health.expected | Expected: {status} |
health.field-defs | {name} field definitions |
health.log-region | Status log |
health.no-job-deadline | No job deadline |
health.not-probed | NOT PROBED |
health.observed | OBSERVED |
health.resource-retry | Refresh measurements |
health.resource-locked | LOCKED |
health.resource-unavailable | UNAVAILABLE |
health.job-budget-note | Desk cron budgets terminate child processes. Sidecar jobs have no whole-job deadline; capture navigation is limited to 30 seconds and model requests to 10 seconds each. Next fire is a configured schedule, not proof that a runner is active. |
health.next | · NEXT {t} |
health.path | Path: |
health.request-headers | Request headers ({n}) |
health.see | See {page} |
health.source | Source: |
health.previous-report | Previous check report retained below; it is not a current availability result. |
health.uptime | {runtime} · PROCESS AGE AT CHECK {h}H {m}M · CHECKED {ago} |
ip.agent | Agent |
ip.customer | Customer |
ip.datacenter | DC |
ip.end | End |
ip.end-date | End date |
ip.extract | Scheduled extract |
ip.override | IP override |
ip.override-default | defaults to customer |
ip.override-required | required |
ip.refresh-token | Refresh token |
ip.refreshing | Refreshing… |
ip.report | Report |
ip.report-type | Report type |
ip.residential | RES |
ip.search | Search |
ip.search-form | Web log search |
ip.searching | Searching… |
ip.shared-tip | {n} accounts on this IP |
ip.start | Start |
ip.start-date | Start date |
ip.tip | {ip} · {kind} · {city} · risk {risk} |
ip.token | Bearer token |
ip.token-note | Refreshes itself when under 3 minutes remain, and once on a 401. The token stays in this tab only. Agent on the renew call is the JWT sub, falling back to the agent field. |
ip.token-placeholder | eyJ… from the manager session |
ips.accts | {n} ACCTS |
ips.note | Addresses are RFC 5737 documentation ranges. Shared means more than one account placed from the IP in the 24H tape. |
keys.words | WORDS |
keys.words-note | One label, one color, one use. The same word means the same thing on every screen. |
kit.active-sort | Active sort |
kit.asc | A–Z / low to high |
kit.asc-tip | Ascending, click for descending |
kit.average-tip | Average {label} |
kit.click-sort | {title}Click to sort {order} · shift-click adds a secondary sort |
kit.collapse-all | Collapse all groups |
kit.collapse-row | Collapse {label} row |
kit.columns-menu | Show or hide {label} columns |
kit.columns-tip | {label} columns |
kit.controls | {label} controls |
kit.desc | Z–A / high to low |
kit.desc-tip | Descending, click for ascending |
kit.detail | {label} detail |
kit.details | Details |
kit.expand-all | Expand all groups |
kit.expand-row | Expand {label} row |
kit.fit | FIT |
kit.fit-note | FIT · drop custom widths so flexible columns use the spare room |
kit.fit-tip | Fit {label} columns to the spare width |
kit.group | GROUP |
kit.group-tip | Group {label} by |
kit.order-grade | best / worst |
kit.order-number | high / low |
kit.order-text | A–Z / Z–A |
kit.order-time | newest / oldest |
kit.remove-sort | Remove this sort key |
kit.reset-note | RESET · sort, grouping, columns and widths back to default |
kit.reset-tip | Reset {label} sort, grouping, columns and widths |
kit.resize-note | Drag to resize · double-click to fit or reset · arrows when focused |
kit.resize-tip | Resize {label} column |
kit.sort | SORT |
kit.sort-shift | Sort {label} · shift-click adds a secondary sort |
kit.sort-tip | Sort {label} |
kit.sum-tip | Sum of {label} |
kit.swipe-cue | Swipe sideways. The matchup stays on the left. |
lanes.before-move | {n} min before a move |
lanes.dot-tip | {time} · {risk} {type} · grade {grade} · CLV {clv}{lead} |
lanes.legend-wager | WAGER · SIZE = RISK |
lanes.legend-weblog | WEBLOG |
lanes.legend-window | BET WINDOW BEFORE MOVE |
log.error | ERROR |
log.info | INFO |
log.warn-up | WARN+ |
nav.primary | Primary |
overview.desk-key | , desk key |
overview.full-page | Full {page} |
overview.open-page | Open the {page} |
overview.shortcuts | Shortcuts and words |
patterns.note | Behavioral correlations from the replay book — same agent, same game, more than one account. No weblog or IP matching. |
profile.24h | 24H |
profile.confidence | CONFIDENCE n/(n+{half}) · NEW ACCOUNTS START AT {prior} |
profile.ips | IPS · 24H |
profile.life | LIFE* |
profile.life-note | ROI 24H / ROI LIFE* · CLV 24H / CLV LIFE* · *LIFETIME IS SYNTHETIC HISTORY SEEDED PER ACCOUNT, PLUS TODAY · OPEN EXPOSURE {exposure} |
profile.life-tip | Synthetic seeded history plus today's settled tickets |
profile.rating-tip | Sharp score, shrunk toward the synthetic lifetime rating |
profile.sr | profile |
rating.tip | Rating: half line-move timing, 30% placement grade, 20% CLV |
review.all-24h | ALL 24H |
review.all-accounts | ALL ACCOUNTS |
review.all-sharps | ALL SHARPS |
common.avg-grade-tip | Average placement grade {grade} |
review.demote | DEMOTE |
review.demote-tip | Force not sharp everywhere on the desk |
review.drill-hint | {head} · CLICK FOR THE BOOK SNAPSHOT |
review.forced-not-sharp | FORCED NOT SHARP |
review.forced-sharp | FORCED SHARP |
review.life-note | LIFE* = SYNTHETIC SEEDED HISTORY + TODAY · CLICK A TICKET, ACCOUNT OR GAME TO DRILL IN |
review.manual | MANUAL |
review.manual-tip | Manual {mode} from Sharp Review{note} |
review.mix-tip | {n} rated wagers · BEFORE {before} · DURING {during} · STABLE {stable} · AFTER {after} · AGAINST {against} |
common.more-legs | +{n} LEGS |
review.moved-their-way | {n} MOVED THEIR WAY |
review.no-note | NO NOTE |
review.note-label | Override note for {customer} |
review.note-placeholder | Optional note |
review.open-at-risk | {tickets} · {risk} AT RISK |
review.perf-scope | Performance scope |
review.perf-window | Performance window |
review.promote | PROMOTE |
review.promote-tip | Force SHARP everywhere on the desk |
review.recent-settled | NO OPEN TICKETS · RECENT SETTLED |
review.reset-tip | Back to the score |
review.roster-scope | Roster scope |
review.sharp-account | Sharp account |
review.sharps | SHARPS |
review.sides-risk | {sides} · {risk} SHARP RISK |
review.snapshot-tip | Book snapshot at bet and close |
review.ticket-scope | Ticket scope |
security.feed-published | Published security feed |
security.feed-waiting | Waiting on the next ticker publish |
security.late-view | The late view keeps every twin in the window, so one alert can appear on more than one view row. |
security.screen-link | Shared IPs and account access |
security.self-bet-lede | The published self-bet is a non-ALERT row over {min} whose agent id equals the login. That is the only self-bet the spool can support. v_self_bets filters the self-bet flag and drops duplicate candidates. The flag is not on the spool, so this pull does not count that view. |
security.windows-lede | Each card is the published count. The gap is whole seconds. An alert keeps its closest Internet twin, and an equal gap keeps the earlier ticket. |
snap.ev | +EV {side} |
snap.fair-from | {a} · {b} · FROM {source} |
snap.pt | {n} PT |
snap.replay-note | · REPLAY QUOTES · STALE LINES ARE FLAGGED, NOT SCORED |
snap.stale | STALE {by} |
snap.stale-tip | Line trails the sharp market |
tag.sharp | SHARP |
tag.steam | STEAM |
telegram.ack | ACK |
telegram.all-customers | all customers |
telegram.allowed-chats | {n} allowed chats on the server |
telegram.approve | APPROVE |
telegram.auto | AUTO |
telegram.card-open | CARD OPEN |
telegram.chat | Chat |
telegram.chat-id | Chat id |
telegram.chat-id-placeholder | Chat id · −100… or @channel |
telegram.chat-pick | Chat… |
telegram.checking | CHECKING |
telegram.clear-tag | CLEAR |
telegram.dest-name | Destination name |
telegram.dest-new | New destination name |
telegram.dest-new-placeholder | Name · e.g. Turn-ins group |
telegram.dest-remove | Remove destination |
telegram.esc | ESC |
telegram.escalate-tip | Escalate to owners |
telegram.invite | INVITE {role} |
telegram.invite-agents | Agent codes for the invite |
telegram.invite-agents-placeholder | Agent codes for an agent invite · e.g. HARBOR, ATLAS |
telegram.invite-copy-tip | Click to copy; send it to one person |
telegram.kind-topics | {kind} · topics |
telegram.lift-all | LIFT ALL |
telegram.live-needs-token | Needs a bot token on the server |
telegram.live-needs-unlock | Needs an operator unlock |
telegram.live-send | LIVE SEND |
telegram.live-tip | Send for real |
telegram.lock | OPERATOR · LOCK |
telegram.lock-tip | End the operator session |
telegram.min-severity | Minimum severity |
telegram.mute-game | GAME {game} |
telegram.mute-until | {target} · UNTIL {until} |
telegram.no-admin | SET DESK_ADMIN_TOKEN TO SEND |
telegram.no-destination | NO DESTINATION |
telegram.not-sent | NOT SENT |
telegram.operator-token | Operator token |
telegram.owner | OWNER |
telegram.person-remove | Remove {name} |
telegram.quiet-to | TO |
telegram.registry-help | In Telegram: /invite in a DM with the bot, then /link steam inside a Desk Ops topic. From a shell: bun run cli tg help. |
telegram.registry-note | Shared with Telegram and the CLI · chat and person ids are masked |
telegram.retry | RETRY |
telegram.route | ROUTE |
telegram.route-remove | Remove route {name} |
telegram.rule-health | HEALTH CHANGES |
telegram.rule-high | HIGH-SEVERITY ALERTS |
telegram.rule-quiet | QUIET HOURS · ALERTS HELD |
telegram.rules-local | THIS BROWSER |
telegram.rules-locked | Unlock the operator with a sidecar connected to edit the bot's rules |
telegram.rules-save | SAVE TO SIDECAR |
telegram.rules-sidecar | SIDECAR RULES |
telegram.rules-synced | The sidecar bot sends with these rules |
telegram.rules-unsaved | {n} unsaved: {keys} |
telegram.setup-hint | Set TELEGRAM_BOT_TOKEN and TELEGRAM_ALLOWED_CHATS to send |
telegram.sev-any | Any severity |
telegram.sev-high | High and up |
telegram.sev-watch | Watch and up |
telegram.sidecar-hint | The sidecar bot sends; this page edits its people, routes and rules |
telegram.test | TEST |
telegram.topic | topic {thread} |
telegram.topic-id | Topic id |
telegram.topic-id-placeholder | Topic id (optional) |
telegram.tpl-alert | ALERT TEMPLATE |
telegram.tpl-turnin | TURN-IN TEMPLATE |
telegram.unlock | UNLOCK |
telegram.whole-chat | whole chat |
theme.switch | Theme: {now}. Switch to {next} |
theme.switch-key | Theme: {now}. {key} switches to {next} |
ticker.grades | Live wager grades |
timeline.foot | {n} ON THIS LINE · {off} OFF THE NUMBER · SAME MARKET ONLY |
timing.alert | Alert wager |
timing.at-least | {s}s or more |
timing.at-most | {s}s or less |
timing.internet | Internet wager |
timing.key | Alert wager, then the Internet wager. Whole seconds. |
timing.seconds | {s}s |
timing.under | under {s}s |
unit.ms | {n} ms |
wall.alerts-count | {high} HIGH · {shown}/{total} · 24H |
wall.alerts-search | Search alerts |
wall.all-books | ALL BOOKS |
wall.all-markets | ALL MARKETS |
wall.at-bat | At bat |
wall.collapse-left | Collapse live board |
wall.collapse-right | Collapse signals |
wall.devig-tip | Devig calculator ({key}) |
wall.flow | HANDLE · 24H |
wall.flow-sub | HOURLY HANDLE · ALL SOURCES · 24H |
wall.game-open | Open {away} at {home}, |
wall.globe | GLOBE |
wall.globe-hint | DRAG TO ROTATE · CLICK A HUB TO FOCUS |
wall.globe-sub | GLOBAL BETTING NETWORK · SHARP MONEY FLOW |
wall.graded | {n} graded |
wall.hide-globe | HIDE GLOBE |
wall.incoming | INCOMING · LAST {window} |
wall.keys | Keyboard shortcuts |
wall.keys-tip | Keyboard shortcuts ({key}) |
wall.largest | LARGEST {risk} · {account} |
wall.mover-books | {n} BOOKS |
wall.mover-first | FIRST |
wall.movers-kinds | Book class of the first book to move |
wall.movers-placeholder | Search movers |
wall.movers-search | Search line movers |
wall.movers-shown | {n} SHOWN · NOISE {noise} |
wall.names | NAMES |
wall.names-long | LONG |
wall.names-short | SHORT |
wall.names-tip | Team names ({key}) |
wall.odds | ODDS |
wall.odds-screen | ODDS SCREEN |
wall.odds-tip | Odds format: {format} ({key}) |
wall.off-cents | {n}¢ OFF |
wall.off-number-tip | Ticket number differs from the line that was up |
wall.off-points | {n} OFF |
wall.open-history | Open line history |
wall.open-history-moved | Open line history, moved |
wall.patterns-sub | CORRELATED ACCOUNTS · SAME AGENT · SAME GAME |
wall.possession | Possession |
wall.rated | RATED |
wall.rated-after | after |
wall.ratings-tip | Wager timing ratings as they arrive and change with the line |
wall.reset-panes | Reset panel layout |
wall.reset-panes-tip | Reset the wall's panel sizes (drag the splitters between panels to resize) |
wall.review | REVIEW |
wall.review-tip | Open Sharp Review ({key}) |
wall.search | Search teams, abbreviations or rotation numbers |
wall.search-placeholder | Team, abbr or rotation |
wall.sharp-line | {agent} · {tickets} · {risk} risk |
wall.telegram-tip | Telegram notifications and turn-ins ({key}) |
wall.tour-auto | AUTO TOUR |
wall.tour-paused | TOUR PAUSED |
wall.tracked | {n} TRACKED · {where} |
wall.tracked-game | Tracked game |
wall.view | View |
wall.wager-view | Wager view |
wall.window-tip | Wager window ({key}) |
wall.patterns-tab | PATTERNS |
tip.rot-4c | Rotation is the join to the 4C board and the ticker |
tip.since-open | Since open |
tip.line-changes | Line changes in the kept history |
tip.open-tickets | Open straight tickets on this line |
tip.rot-ticker | Rotation is the join to the ticker |
tip.opener | Opening line on each side; for a moneyline, the opening price with the other side at a standard hold |
tip.best-price | Best fresh price on each side at the shown books, and how many more books match it |
tip.avg-price | Average fresh price on each side at the shown books |
tip.hold | Market hold taking each side at its best shown book; negative means a two-way arbitrage |
tip.accounts-either | Distinct accounts on either side |
tip.off-market | Books off the consensus at the current thresholds |
tip.timing | Bet timing vs line moves |
tip.open-exposure | Book pays this if every open ticket wins |
tip.settled-pl | Bettor P/L on settled tickets |
tip.synthetic-life | Synthetic lifetime + today |
tip.clv-trend | Last 12 graded straights, or weekly lifetime ROI when fewer than 3 |
tip.worst-case | Book's result if the heavier-liability side wins |
tip.flag-accounts | Accounts named on this flag |
tip.flag-ip | Shared address on a SHAREDIP flag. The wager ip lives in desk/v1/wagers/. |
tip.signal | 0.00–1.00 from the move off the open |
tip.volume | Handle and tickets on this side of the game and market. Not the 24H board handle. |
tip.position | Liability each side, net exposure, and the side the book needs |
tip.graded-today | Graded straights today |
tip.beat-close | Beat-close rate on today's graded straights |
tip.before | Share of rated wagers placed ahead of or during a move their way |
tip.after | Share of rated wagers placed after the move (chasing or buying back) |
tip.timing-mix | BEFORE+DURING · STABLE · AFTER · AGAINST |
tip.open-risk | Open risk |
tip.of-side | Sharp risk as a share of the side's open handle |
tip.move-since-sharps | Risk-weighted net line move toward the side since the sharp wagers |
tip.line-now | Current line on their side |
tip.move-since-wager | Net line move toward them since the wager |
tip.rank | Rank by settled P/L, then CLV |
tip.settled-risk | Settled risk |
tip.clv-window | Risk-weighted CLV on graded straights in the window |
tip.today-blend | Blend from today's tape before shrinkage |
tip.life-rating | Lifetime rating the day is shrunk toward |
tip.confidence | Weight on today's tape: n/(n+{half}) |
tip.vs-cut | Score minus the {cut} cut |
ds.recent-handle | {min}M HANDLE |
graph.label | 4C line with the bet window before each move |
graph.move-tip | {t} {from} to {to}, {n} wagers in the window |
graph.city-tip | {wagers} · {kind} |
graph.city-log | {city} bet log |
graph.line | 4C LINE |
graph.window | BET WINDOW {m}M |
graph.off-number | OFF THE NUMBER |
graph.on-number | ON THE NUMBER |
graph.in-window | INSIDE THE BET WINDOW |
graph.hint | Select a print for the wagers in the {m} minutes before it. Select a wager for the session that logged it. Double-click a dot for the ticket. |
graph.on-print | ON THE PRINT |
graph.before | {gap} BEFORE |
graph.until | UNTIL {t} |
graph.slot | {tickets} IN THE SLOT |
graph.no-logout | NO LOGOUT ROW |
graph.login-logout-from | LOGIN AND LOGOUT FROM #{id} |
graph.login-from | LOGIN FROM #{login} · LOGOUT FROM #{logout} |
graph.sets-both | SETS {login} AND {logout} |
graph.sets | SETS {word} |
graph.city-rows | {n} ROWS ON THIS LINE |
graph.prints | {n} PRINTS · THE WINDOW IS THE {m} MINUTES BEFORE THAT PRINT |
graph.window-tip | {n} in the {m} minute window |
graph.in-window-short | IN WINDOW |
health.stage-tape | TAPE |
health.stage-tape-what | {n} streams buffered in the sidecar |
health.stage-flush | FLUSH |
health.stage-compact | COMPACT |
health.stage-target | TARGET |
health.stage-missing | missing {streams} |
health.stage-retention | RETENTION |
health.sweep-r2 | R2 lifecycle rule per stream |
health.sweep-local | sweep deletes expired local days |
telegram.rule-results | FINALS · ALERTS AND SHARPS GRADED |
health.score-title | SCORE PROOF |
health.score-missing | No score object yet. The sidecar writes it on flush. |
health.score-line | Steam {steam} · moves {moves} · sharps {sharps} · beat close {beat} · book {book} |
ip-investigation.ip-investigation-480abd7c | IP investigation |
ip-investigation.account-connections-be28fdc2 | ACCOUNT CONNECTIONS |
ip-investigation.find-shared-addresses-and-7bcc0d88 | Find shared addresses and follow the accounts connecting them. |
ip-investigation.scheduled-fantasy402-extract-50e7abe4 | Scheduled Fantasy402 extract |
ip-investigation.loading-the-latest-extract-8522050e | Loading the latest extract… |
ip-investigation.no-scheduled-extract-is-fd2ddd5c | No scheduled extract is available. Use detailed log search below to inspect activity. |
ip-investigation.extracted-00a65967 | Extracted |
ip-investigation.pass-dbf10ed2 | pass · |
ip-investigation.rows-in-this-pass-d062bd74 | rows in this pass |
ip-investigation.extract-warning-9a3ba208 | Extract warning: |
ip-investigation.the-saved-groups-may-bef0f6e0 | . The saved groups may be incomplete. |
ip-investigation.shared-addresses-83f4dd1b | Shared addresses |
ip-investigation.two-or-more-customer-18467ae3 | Two or more customer IDs |
ip-investigation.distinct-customers-ccca29a8 | Distinct customers |
ip-investigation.across-shared-addresses-448e13b6 | Across shared addresses |
ip-investigation.recurring-customers-4f3545a3 | Recurring customers |
ip-investigation.seen-on-multiple-addresses-89c25ca2 | Seen on multiple addresses |
ip-investigation.largest-group-172d8bb5 | Largest group |
ip-investigation.customer-ids-on-one-5f3401db | Customer IDs on one address |
ip-investigation.find-an-ip-customer-7960b8b8 | Find an IP, customer or login |
ip-investigation.ip-name-or-customer-ab3f109a | IP, name or =customer for an exact match |
ip-investigation.group-size-f501715b | Group size |
ip-investigation.2-customers-cad0e87c | 2+ customers |
ip-investigation.3-customers-ae87ecf3 | 3+ customers |
ip-investigation.5-customers-f4a69789 | 5+ customers |
ip-investigation.10-customers-4afe7569 | 10+ customers |
ip-investigation.largest-shared-groups-7543a487 | Largest shared groups |
ip-investigation.customer-ids-per-address-4d04534d | Customer IDs per address · top eight matching groups |
ip-investigation.select-an-address-in-016ceb46 | Select an address in the list to inspect its connections. |
ip-investigation.no-shared-addresses-match-ffe0ae15 | No shared addresses match these filters. |
ip-investigation.selected-ip-details-e69e6066 | Selected IP details |
ip-investigation.address-details-74d6af33 | Address details |
ip-investigation.customers-21eb2153 | customers |
ip-investigation.recur-on-other-addresses-298ef59f | recur on other addresses |
ip-investigation.customer-ids-57a99ba0 | Customer IDs |
ip-investigation.find-addresses-matching-value1-189a31a9 | Find addresses matching {value1} |
ip-investigation.sampled-login-names-9583cbb8 | Sampled login names |
ip-investigation.not-recorded-b37c7879 | Not recorded |
ip-investigation.the-extract-keeps-at-2ecc3aee | The extract keeps at most four login names per address. These are names, not login counts or a confirmed customer-to-login mapping. |
ip-investigation.other-addresses-with-the-65db4b85 | Other addresses with the same customers |
ip-investigation.shared-c6bc6c86 | shared · |
ip-investigation.more-connections-select-a-700022d8 | more connections. Select a customer to narrow the list. |
ip-investigation.no-other-address-shares-b3c2ff7e | No other address shares these customer IDs in this extract. |
ip-investigation.select-an-address-from-349995f3 | Select an address from the list. |
ip-investigation.shared-ip-directory-9397c2d0 | Shared-IP directory |
ip-investigation.matching-addresses-ranked-by-735ba990 | matching addresses · ranked by customer count, then recurring customers |
ip-investigation.shared-addresses-ranked-by-cf664846 | Shared addresses ranked by number of customer IDs |
ip-investigation.address-56ef8f20 | Address |
ip-investigation.customers-aabe76f1 | Customers |
ip-investigation.across-addresses-55425fb7 | Across addresses |
ip-investigation.customer-preview-1c65acbb | Customer preview |
ip-investigation.value1-recurring-8810bfac | {value1} recurring |
ip-investigation.no-overlap-2ae0561f | No overlap |
ip-investigation.value1-more-a5ce39f0 | +{value1} more |
ip-investigation.no-matches-try-a-c4a62d70 | No matches. Try a shorter search or a smaller group size. |
ip-investigation.address-pages-f1e6f586 | Address pages |
ip-investigation.previous-a57b08a4 | Previous |
ip-investigation.page-0a30a815 | Page |
ip-investigation.of-28391d3b | of |
ip-investigation.next-1ff57a29 | Next |
ip-investigation.shared-addresses-can-reflect-3c13906b | Shared addresses can reflect a household, office, mobile carrier or VPN. This is an exact customer-ID overlap view, not a finding of coordinated activity. The saved extract has no event timestamps; activity charts require detailed log results. |
ip-activity.detailed-activity-1f585ac9 | Detailed activity |
ip-activity.returned-activity-by-report-a66e6395 | Returned activity by report day |
ip-activity.central-time-log-records-c7d73b18 | Central time · log records, not login sessions or wagers. Dates absent from the response are not shown as zero. |
ip-activity.no-usable-timestamps-were-e732f2f1 | No usable timestamps were returned. |
ip-activity.records-have-no-usable-3caa5813 | records have no usable timestamp and are excluded from the chart. |
bun-tooling.developer-tooling-bun-aeabc35f | DEVELOPER TOOLING · BUN |
bun-tooling.bun-adoption-checks-2397d7f3 | Bun adoption & checks |
bun-tooling.repository-review-dated-cf383173 | Repository review dated |
bun-tooling.these-are-source-mappings-754538c4 | . These are source mappings and repeatable checks, not live deployment status or a fresh gate result. |
bun-tooling.find-a-feature-or-dc943775 | Find a feature or source file |
bun-tooling.adoption-9b331283 | Adoption |
bun-tooling.all-features-808ce052 | All features |
bun-tooling.features-eda614f2 | features · |
bun-tooling.copy-command-for-value1-7af9cab6 | Copy command for {value1} |
bun-tooling.copy-command-9a01feec | Copy command |
bun-tooling.source-verification-77c28add | Source & verification |
bun-tooling.official-release-reference-944f954d | Official release reference ↗ |
bun-tooling.no-features-match-clear-8541fe03 | No features match. Clear the search or choose All features. |
bun-tooling.review-base-revision-7fe451d4 | Review base revision: |
bun-tooling.in-use-means-implemented-9fd82675 | . In use means implemented in the repository. Available means opt-in tooling. Deferred means no adoption. Human proof review remains a separate field in repository records. |
repo-check-feed.no-verification-evidence-recorded-370aaaee | No verification evidence recorded for this revision yet. |
repo-check-feed.repository-checks-proofs-933b131b | Repository checks & proofs |
repo-check-feed.refresh-checks-0fd0bae1 | Refresh checks |
repo-check-feed.show-actual-feed-85c97cb2 | Show actual feed |
repo-check-feed.preview-sample-states-e1005e00 | Preview sample states |
repo-check-feed.registered-checkouts-change-fingerprint-5a1f902f | Registered checkouts → change fingerprint → persisted queue → branding and metadata checks → failure or recovery event. Commit proofs are imported separately. |
repo-check-feed.checks-use-local-checkout-1cf919b1 | Checks use local checkout contents. They do not fetch remote branches, deploy changes, or prove visual quality. |
repo-check-feed.sample-preview-these-are-c0843b0f | Sample preview — these are not repository results. |
repo-check-feed.loading-repository-checks-dd64ae02 | Loading repository checks… |
repo-check-feed.operator-access-3e5dead0 | Operator access |
repo-check-feed.sample-data-d04815cd | Sample data |
repo-check-feed.last-poll-value1-ct-42717024 | Last poll {value1} CT |
repo-check-feed.no-poll-recorded-71420a5d | No poll recorded |
repo-check-feed.stale-watcher-may-be-d262531a | · Stale: watcher may be stopped |
repo-check-feed.repositories-7d690481 | repositories · |
repo-check-feed.needs-266d1c70 | needs |
repo-check-feed.need-be8dff00 | need |
repo-check-feed.attention-e0787d27 | attention |
repo-check-feed.filter-repository-checks-a6877ecc | Filter repository checks |
repo-check-feed.all-states-f1894114 | All states |
repo-check-feed.lifecycle-3ec6c962 | Lifecycle: |
repo-check-feed.review-d686a57d | Review: |
repo-check-feed.reviewed-fad6057b | Reviewed |
repo-check-feed.unreviewed-f5265a26 | Unreviewed |
repo-check-feed.revision-2e516d68 | Revision |
repo-check-feed.uncommitted-changes-included-829a8879 | · Uncommitted changes included |
repo-check-feed.passed-436fe71b | Passed |
repo-check-feed.failed-031a8f0f | Failed |
repo-check-feed.commit-proof-34a89f4d | Commit proof |
repo-check-feed.gate-passed-a21ca1b1 | Gate passed |
repo-check-feed.gate-failed-732827e5 | Gate failed |
repo-check-feed.captured-8a03fa9a | Captured |
repo-check-feed.ct-bun-7c4e0454 | CT · Bun |
repo-check-feed.bun-tests-70f1ecfd | Bun tests · |
repo-check-feed.node-tests-361d5dd8 | Node tests · |
repo-check-feed.image-proofs-da7b268d | image proofs |
repo-check-feed.this-proof-covers-the-d24e2e5d | This proof covers the committed revision only. |
repo-check-feed.proof-rejected-invalid-or-c33a1a74 | Proof rejected: invalid or inconsistent record. |
repo-check-feed.view-verification-00a36f40 | View verification |
repo-check-feed.for-10c22bcf | for |
repo-check-feed.no-repositories-in-this-1768cb0e | No repositories in this state. |
repo-check-feed.verification-record-5bef36c5 | Verification record · |
repo-check-feed.contract-results-recorded-180b8a4b | contract results recorded |
repo-check-feed.contract-verification-for-value1-a562e220 | Contract verification for {value1} |
repo-check-feed.this-legacy-proof-has-ca79dace | This legacy proof has no per-contract results. Run the gate on a new committed revision to record them. |
repo-check-feed.each-row-records-one-dc3e3e26 | Each row records one contract. Times measure that contract comparison, not command execution, and are never asserted. Refresh imports recorded results; it does not rerun checks. Raw logs remain local. |
repo-check-feed.repository-activity-828be975 | Repository activity |
repo-check-feed.failure-recovery-and-proof-5dcabb33 | Failure, recovery and proof record updates appear here. Repeat failures stay on the repository card. Telegram delivery is not connected to this feed. |
repo-check-feed.needs-attention-c1ebc781 | Needs attention |
repo-check-feed.proof-record-updated-7bd4aee3 | Proof record updated |
repo-check-feed.recovered-37ce0a91 | Recovered |
repo-check-feed.ct-f9cd8d7e | CT · |
repo-check-feed.no-repository-events-recorded-bef86673 | No repository events recorded. |
workbench.sample-agent-6aeefe88 | Sample agent |
workbench.sample-player-294b7d04 | Sample player |
workbench.second-sample-242af83d | Second sample |
workbench.name-dcd1d522 | Name |
workbench.kind-f5387f9b | Kind |
workbench.sample-value-1a5d15fe | Sample value |
workbench.workspace-tooling-f8c2a520 | WORKSPACE TOOLING |
workbench.styles-themes-checks-5f0322c1 | Styles, themes & checks |
workbench.build-on-the-shared-cbcf711b | Build on the shared Desk components. Try sample controls and inspect the private repository check feed. |
workbench.back-to-workspace-0f0c0c6e | Back to workspace |
workbench.theme-preview-d04517dd | Theme preview |
workbench.preview-theme-8bc94986 | Preview theme |
workbench.dark-60acc53f | Dark |
workbench.light-dbcd5e7b | Light |
workbench.this-preview-is-scoped-a5c9fa65 | This preview is scoped to Workbench. The palette comes from the shared stylesheet. |
workbench.controls-states-627aac04 | Controls & states |
workbench.default-button-2569c6db | Default button |
workbench.disabled-button-a66924d7 | Disabled button |
workbench.confirmed-fe00b67b | Confirmed |
workbench.needs-review-07297fa9 | Needs review |
workbench.sample-95a2f1ed | Sample |
workbench.sample-name-9b854772 | Sample name |
workbench.type-to-check-focus-e4d49f52 | Type to check focus and contrast |
workbench.sample-type-1e3f2e3f | Sample type |
workbench.player-64aee8c6 | Player |
workbench.empty-state-no-records-54a893a2 | Empty state: no records yet. Unknown is not zero. |
workbench.table-harness-769c7519 | Table harness |
workbench.try-sorting-grouping-columns-35d04b91 | Try sorting, grouping, columns and reset. Saved layout belongs only to this sample table. |
workbench.tool-contract-harness-e7e95eb2 | Tool contract harness |
workbench.exercise-input-validation-locally-6f696b65 | Exercise input validation locally. This does not register browser tools or call a service. |
workbench.run-sample-tool-checks-0175a605 | Run sample tool checks |
workbench.theme-and-page-guide-edcee948 | Theme and page guide |
workbench.one-shared-palette-one-d6dd6d10 | One shared palette, one page contract. This describes repository coverage, not deployment status. Dark and light previews apply only to this Workbench. |
workbench.the-separate-bookdeskops-workspace-e0f52ecb | The separate BookDeskOps workspace Site has its own assets. Theme synchronization and the published Site version have not been verified here. |
workbench.project-checks-add4a2f3 | Project checks |
workbench.reference-commands-for-development-04c423df | Reference commands for development. Their presence here does not claim they passed. |
alert-evidence.value1-alerts-667090be | · {value1} alerts |
alert-evidence.no-alerts-ba7887e8 | · No alerts |
security-timing-panel.timing-review-f7adf54c | Timing review |
security-timing-panel.measured-snapshot-examples-not-f5b02972 | Measured snapshot examples · not a live security feed. Filter the examples or rank the largest gaps first. |
security-timing-panel.pairs-by-timing-window-91c7d698 | Pairs by timing window |
security-timing-panel.counts-cover-only-the-1b3eee02 | Counts cover only the |
security-timing-panel.measured-examples-they-do-da243b01 | measured examples. They do not describe the current wager tape. |
security-timing-panel.find-alert-ticket-53c52e4b | Find alert ticket |
security-timing-panel.wager-number-0aa0ef3b | Wager number |
security-timing-panel.timing-window-5db5cb8f | Timing window |
security-timing-panel.all-windows-a5a6160c | All windows |
security-timing-panel.order-6be09082 | Order |
security-timing-panel.largest-gap-first-a7c33809 | Largest gap first |
security-timing-panel.ticket-number-ef4169ff | Ticket number |
security-timing-panel.matching-measured-pairs-71581b09 | matching measured pairs |
security-timing-panel.signed-gap-a-negative-f7e4ff3a | Signed gap: a negative value means the Internet ticket came first. |
security-timing-panel.alert-44a57b22 | Alert |
security-timing-panel.gap-cb129306 | Gap |
security-timing-panel.s-043a7187 | s |
security-timing-panel.no-measured-pairs-match-4a3cdc69 | No measured pairs match. Try another ticket or timing window. |
security-timing-panel.hide-alert-evidence-ef3d3eee | Hide alert evidence |
security-timing-panel.show-alert-evidence-2e0cb3a3 | Show alert evidence |
security-timing-panel.alert-to-inspect-905c3336 | Alert to inspect |
security-timing-panel.the-inspector-selects-from-adcdf817 | The inspector selects from the complete measured sample; table filters do not change its selection. |
directory-connections.bot-registry-a6215c1b | Bot registry · |
directory-connections.bots-10b8ecc0 | bots |
directory-connections.maintain-separate-bot-identities-830e2786 | Maintain separate bot identities and vault key references, then choose a bot on each contact. The current sidecar runs one bot. Registry entries for other bots do not activate additional pollers, send messages or grant access. |
directory-connections.bot-display-name-55564bb9 | Bot display name |
directory-connections.bot-username-897e55bc | Bot username |
directory-connections.your-bot-02d93ff9 | @your_bot |
directory-connections.bot-purpose-db2019af | Bot purpose |
directory-connections.bot-key-reference-1fd471a4 | Bot key reference |
directory-connections.no-key-reference-6e35ab23 | No key reference |
directory-connections.save-bot-revision-dd019e74 | Save bot revision |
directory-connections.register-bot-ebc5dbec | Register bot |
directory-connections.cancel-bot-edit-5db11428 | Cancel bot edit |
directory-connections.manage-encrypted-bot-keys-0a7f4ed1 | Manage encrypted bot keys |
directory-connections.only-references-appear-here-dea52ec7 | · Only references appear here; token values remain in the vault. A saved reference does not install a runtime credential. |
directory-connections.username-observed-on-the-ca81196f | Username observed on the existing sidecar |
directory-connections.registry-only-not-verified-7e8a0e97 | Registry only · not verified on the sidecar |
directory-connections.key-reference-beb3ff61 | Key reference: |
directory-connections.none-140bedbf | none |
directory-connections.edit-bot-c0cd1fd0 | Edit bot |
directory-connections.no-bots-registered-here-c641728d | No bots registered here yet. Add your existing bot or a planned bot above. |
directory-connections.retained-bot-registry-revisions-1fee2b69 | retained bot registry revisions. Telegram roles stay in the sidecar registry. |
directory-connections.agreements-balances-wager-evidence-680d069d | Agreements, balances & wager evidence |
directory-connections.use-provider-account-matches-9b4b3431 | Use provider account matches to reconcile customers with existing agent agreements and confirmed manual balances. Telegram messages and acknowledgments never place a wager, confirm a deal, settle a balance or post an accounting entry. |
directory-connections.confirmed-agreements-14ae1286 | confirmed agreements · |
directory-connections.draft-agreements-77970bc3 | draft agreements · |
directory-connections.latest-confirmed-balance-observations-bc8ad426 | latest confirmed balance observations |
directory-connections.accounting-settings-were-not-e557e7cb | Accounting settings were not available at this read. Unknown balances are not zero. |
directory-connections.manage-account-profiles-agreements-194604bb | Manage account profiles, agreements & balances |
directory-connections.review-wager-evidence-in-3861e0d2 | Review wager evidence in Desk |
operator-vault-option.always-also-save-my-c7dab491 | Always also save my verified operator token encrypted |
operator-vault-option.applies-to-future-unlocks-9faa735d | Applies to future unlocks in this browser. |
operator-vault-option.environment-keys-02aee82a | Environment & keys |
operator-vault-option.stores-the-copy-your-2c05094c | stores the copy; your HttpOnly session keeps Desk access unlocked for up to 12 hours. |
workspace-sessions-panel.workspace-sessions-6a791c2d | Workspace sessions |
workspace-sessions-panel.operator-access-for-this-e42cb09a | Operator access for this workspace only. Each browser unlock creates a separate 12-hour session. Shared operator access does not identify an employee or customer. Provider customer logins are separate and appear as observed activity below. |
workspace-sessions-panel.workspace-9f7ea773 | Workspace: |
workspace-sessions-panel.refresh-sessions-8bbcdf8b | Refresh sessions |
workspace-sessions-panel.this-browser-101f4d95 | This browser |
workspace-sessions-panel.created-c116a61e | · Created |
workspace-sessions-panel.ct-expires-9066403c | CT · Expires |
workspace-sessions-panel.ct-15cbe5f0 | CT |
workspace-sessions-panel.session-6959b415 | Session |
workspace-sessions-panel.end-this-session-f7119cdf | End this session |
workspace-sessions-panel.revoke-session-8130308b | Revoke session |
workspace-sessions-panel.checking-workspace-sessions-449637b9 | Checking workspace sessions… |
workspace-vault-page.lock-vault-441f34d1 | Lock vault |
workspace-vault-page.private-workspace-805bb405 | PRIVATE WORKSPACE |
workspace-vault-page.one-place-for-project-e53fe82a | One place for project variables, API keys, and passwords. |
workspace-vault-page.operator-unlocked-732ecd4a | Operator unlocked |
workspace-vault-page.vault-locked-22a8f981 | Vault locked |
workspace-vault-page.encrypted-storage-explicit-access-ed84bf40 | Encrypted storage · explicit access |
workspace-vault-page.values-stay-on-the-96bb1c5c | Values stay on the server until you reveal one. Reveals hide after 15 seconds. Saving an entry does not install it into a running project. DESK_ADMIN_TOKEN and the vault encryption key stay in secure runtime configuration. |
workspace-vault-page.unlock-private-credentials-4b9c3f97 | Unlock private credentials |
workspace-vault-page.unlock-vault-75018776 | Unlock vault |
workspace-vault-page.future-operator-unlocks-d5e00add | Future operator unlocks |
workspace-vault-page.save-or-replace-an-3d549aa4 | Save or replace an entry |
workspace-vault-page.project-98595978 | Project |
workspace-vault-page.environment-9e471951 | Environment |
workspace-vault-page.development-21b6a798 | Development |
workspace-vault-page.preview-324b134f | Preview |
workspace-vault-page.production-13a7c655 | Production |
workspace-vault-page.type-baaddf70 | Type |
workspace-vault-page.environment-variable-b86ad171 | Environment variable |
workspace-vault-page.api-key-16f0ee47 | API key |
workspace-vault-page.password-e7cf3ef4 | Password |
workspace-vault-page.api-token-f01bd2be | API_TOKEN |
workspace-vault-page.value-8e37953d | Value |
workspace-vault-page.save-encrypted-entry-a97fe563 | Save encrypted entry |
workspace-vault-page.project-credentials-e97839e3 | Project credentials |
workspace-vault-page.no-saved-entries-yet-ff76ee2a | No saved entries yet. Choose a project above to add its first credential. |
workspace-vault-page.updated-3a5ecca1 | Updated |
workspace-vault-page.utc-7e5f76c9 | UTC |
workspace-vault-page.replace-95e15439 | Replace |
workspace-vault-page.hide-ac20a57b | Hide |
workspace-vault-page.reveal-36b830bd | Reveal |
agent-profiles-panel.telegram-contacts-balances-696d1ea0 | Telegram contacts & balances |
agent-profiles-panel.keep-contact-details-separate-2a739a2a | Keep contact details separate from dated financial agreements. IDs link to people and groups already known by the bot; saving a profile does not approve a chat or grant access. |
agent-profiles-panel.manage-the-connected-bot-cd17bfec | Manage the connected bot, groups and alert routes on Home |
agent-profiles-panel.add-contact-profile-dc489ab0 | Add contact profile |
agent-profiles-panel.record-balance-54ef2bf4 | Record balance |
agent-profiles-panel.edit-contact-profile-56d4ee0a | Edit contact profile |
agent-profiles-panel.new-contact-profile-f50d6222 | New contact profile |
agent-profiles-panel.profile-agent-id-f20b0ede | Profile agent ID |
agent-profiles-panel.profile-player-id-optional-c514d3b2 | Profile player ID (optional) |
agent-profiles-panel.display-name-2b7f6a84 | Display name |
agent-profiles-panel.telegram-user-id-37038770 | Telegram user ID |
agent-profiles-panel.telegram-username-e936cc5b | Telegram username |
agent-profiles-panel.username-93100fc4 | @username |
agent-profiles-panel.telegram-group-chat-id-b4c84b6f | Telegram group chat ID |
agent-profiles-panel.group-display-name-d9033002 | Group display name |
agent-profiles-panel.group-topic-id-optional-5dc72935 | Group topic ID (optional) |
agent-profiles-panel.contact-notes-04a6bf4e | Contact notes |
agent-profiles-panel.save-contact-profile-3e7a1d2d | Save contact profile |
agent-profiles-panel.close-contact-editor-004a5a9a | Close contact editor |
agent-profiles-panel.agent-fd33e417 | / Agent |
agent-profiles-panel.telegram-id-a19c2c9d | Telegram ID: |
agent-profiles-panel.not-entered-18d90dcf | Not entered |
agent-profiles-panel.username-5521781e | · Username: |
agent-profiles-panel.group-aff83496 | Group: |
agent-profiles-panel.no-id-4d48acc5 | No ID |
agent-profiles-panel.topic-value1-d8440d55 | · Topic {value1} |
agent-profiles-panel.edit-contact-81cd065a | Edit contact |
agent-profiles-panel.no-contact-profiles-yet-849ea887 | No contact profiles yet. |
agent-profiles-panel.balances-usd-eb0b5be3 | Balances · USD |
agent-profiles-panel.agent-settlement-positive-means-4a2738e4 | Agent settlement: positive means the agent owes us; negative means we owe the agent. Player account: positive is player credit; negative is player debt. These are separate observations, never added together or inferred from wagers. |
agent-profiles-panel.new-balance-observation-2c82f495 | New balance observation |
agent-profiles-panel.balance-kind-71b20fe7 | Balance kind |
agent-profiles-panel.agent-settlement-05ebf5fc | Agent settlement |
agent-profiles-panel.player-account-037e79eb | Player account |
agent-profiles-panel.balance-agent-id-5d4a55b6 | Balance agent ID |
agent-profiles-panel.balance-player-id-required-f15c922c | Balance player ID (required for player balance) |
agent-profiles-panel.signed-balance-usd-4f8fd89f | Signed balance (USD) |
agent-profiles-panel.balance-as-of-d72d8950 | Balance as of ( |
agent-profiles-panel.balance-source-or-reconciliation-f88eeb5b | Balance source or reconciliation reference |
agent-profiles-panel.report-or-reconciled-statement-0187249a | Report or reconciled statement reference |
agent-profiles-panel.balance-notes-c6fd1f35 | Balance notes |
agent-profiles-panel.save-unconfirmed-balance-70b22a8f | Save unconfirmed balance |
agent-profiles-panel.close-balance-editor-6273ff33 | Close balance editor |
agent-profiles-panel.agent-settlements-6f193606 | Agent settlements |
agent-profiles-panel.player-accounts-667d957a | Player accounts |
agent-profiles-panel.as-of-43157504 | As of |
agent-profiles-panel.confirmed-observation-not-a-fd257a4e | Confirmed observation · not a live balance |
agent-profiles-panel.no-confirmed-balance-unknown-cfdaecd4 | No confirmed balance. Unknown is not zero. |
agent-profiles-panel.balance-observations-and-confirmation-e45eba47 | Balance observations and confirmation history ( |
agent-profiles-panel.as-of-aaa06543 | · as of |
agent-profiles-panel.unconfirmed-3229d16c | Unconfirmed |
agent-profiles-panel.confirmed-value1-ct-0ea2e2c2 | Confirmed {value1} CT |
agent-profiles-panel.review-balance-df451238 | Review balance |
agent-profiles-panel.confirm-balance-observation-99299d9e | Confirm balance observation |
agent-profiles-panel.i-checked-the-balance-f53bad08 | I checked the balance kind, signed amount, source and observation time. This records a balance; it does not send a message or payment. |
agent-profiles-panel.confirm-balance-d05da1e7 | Confirm balance |
agent-profiles-panel.cancel-balance-review-026b7bf0 | Cancel balance review |
agent-profiles-panel.contact-change-history-45b5abc4 | Contact change history ( |
agent-profiles-panel.created-d70b9e24 | Created |
sidecar-resources-panel.sentinel-live-cpu-memory-6e2d258f | SENTINEL · LIVE CPU & MEMORY |
sidecar-resources-panel.bun-value1-pid-value2-f1799ee1 | Bun {value1} · PID {value2} · {value3} |
sidecar-resources-panel.operator-access-111b837c | OPERATOR ACCESS |
sidecar-resources-panel.unlock-measurements-d96a11e8 | Unlock measurements |
sidecar-resources-panel.sampler-warming-up-first-c56bf557 | Sampler warming up. First measurement takes five seconds. |
sidecar-resources-panel.cpu-one-core-last-585ad575 | CPU · one core · last interval |
sidecar-resources-panel.mib-dea6cb8d | MiB |
sidecar-resources-panel.resident-memory-36326b34 | Resident memory |
sidecar-resources-panel.javascript-heap-b369b468 | JavaScript heap |
sidecar-resources-panel.unavailable-ca184496 | Unavailable |
sidecar-resources-panel.established-process-tcp-connections-ccdd5b84 | Established process TCP connections |
sidecar-resources-panel.sentinel-quiet-window-3c4c57bb | Sentinel-quiet window |
sidecar-resources-panel.active-sentinel-window-b9b9c85d | Active Sentinel window |
sidecar-resources-panel.collecting-a-one-minute-b0a822be | Collecting a one-minute window |
sidecar-resources-panel.value1-seconds-value2-ms-14db60e5 | · {value1} seconds · {value2} ms CPU · {value3}% of one core · RSS {value4}–{value5} MiB |
sidecar-resources-panel.websockets-3115fb10 | WebSockets: |
sidecar-resources-panel.event-sse-3cd58526 | · event SSE: |
sidecar-resources-panel.snapshot-sse-fc24e9af | · snapshot SSE: |
sidecar-resources-panel.http-in-flight-b795dcc2 | · HTTP in flight: |
sidecar-resources-panel.proxy-in-flight-b6df6463 | · proxy in flight: |
sidecar-resources-panel.known-timers-1c428b13 | Known timers: |
sidecar-resources-panel.sampler-36acc522 | sampler + |
sidecar-resources-panel.sentinel-heartbeats-cron-schedules-681f94b2 | Sentinel heartbeats · cron schedules: |
sidecar-resources-panel.process-timer-total-unavailable-e397a832 | . Process timer total: unavailable. |
sidecar-resources-panel.sample-720206d6 | Sample: |
sidecar-resources-panel.window-ending-4bfb8dc8 | · window ending: |
sidecar-resources-panel.warming-up-32cd1518 | warming up |
sidecar-resources-panel.this-is-a-current-9b7b371f | . This is a current measurement, not a before/after Bun comparison. |
data-screen.board-data-status-8d600324 | Board data status |
data-screen.replay-data-5a4d4a50 | REPLAY DATA |
data-screen.seed-367ef06b | Seed |
data-screen.clock-cd7e23a2 | · clock |
data-screen.tracked-lines-2d29b394 | tracked lines |
data-screen.game-live-labels-describe-d4ad0eec | Game LIVE labels describe replay game state |
data-screen.provider-freshness-unavailable-99f61561 | Provider freshness unavailable |
data-screen.replay-clock-is-not-d26b240e | Replay clock is not a source timestamp |
data-screen.sentinel-diagnostics-9cc2bc82 | Sentinel diagnostics |
data-screen.observation-diagnostics-5e9a19a0 | Observation diagnostics |
data-screen.close-diagnostics-1434270b | Close diagnostics |
data-screen.the-board-below-is-2bb2c2d9 | The board below is replay data. Sentinel reports requests routed through its proxy and explicit captures; it does not verify these prices. Operator authentication is required in its console. |
data-screen.open-live-sentinel-events-2212fb7a | Open live Sentinel events and snapshots ↗ |
data-screen.recent-replay-diagnostics-8225c187 | Recent replay diagnostics |
data-screen.b-g-f-a-08333d64 | B G F A P M L E OPEN A SCREEN · ROW CLICK OR ENTER INSPECTS EVIDENCE · HEADER CLICK SORTS (SHIFT ADDS A KEY) · DRAG EDGES TO RESIZE · COLUMNS ADDS OR HIDES |
data-screen.tap-a-row-to-9bacffd4 | Tap a row to inspect evidence |
data-screen.row-density-93a6a5e7 | Row density |
data-screen.comfortable-459a23a5 | Comfortable |
data-screen.compact-99452646 | Compact |
data-screen.select-a-row-to-b1466ef4 | Select a row to inspect its evidence. Scroll the table for additional columns. |
data-screen.row-evidence-c4080489 | Row evidence |
data-screen.close-evidence-56bd57a9 | Close evidence |
data-screen.replay-line-a2bb650a | REPLAY · line |
data-screen.prices-moves-tickets-and-5addd8e7 | Prices, moves, tickets and signals below belong to the replay. No live provider timestamp is available. |
telegram-directory-page.telegram-people-94a43a3e | TELEGRAM / PEOPLE |
telegram-directory-page.customers-employees-d54bc817 | Customers & employees |
telegram-directory-page.private-contacts-telegram-links-daac9064 | Private contacts, Telegram links and retained delivery evidence. |
telegram-directory-page.open-desk-telegram-console-cf044351 | Open Desk Telegram console |
telegram-directory-page.bot-delivery-management-52343ee1 | Bot & delivery management |
telegram-directory-page.existing-account-profiles-balances-c91391c3 | Existing account profiles & balances |
telegram-directory-page.provider-and-agent-references-556a7212 | Provider and agent references connect this directory to account profiles without copying balances or assigning permissions. Usernames are manually entered and unverified. Only the bot registry grants Telegram roles. |
telegram-directory-page.private-operator-access-4139fe2e | Private operator access |
telegram-directory-page.checking-private-directory-4b2e4d86 | Checking private directory… |
telegram-directory-page.directory-operator-token-e5933aa5 | Directory operator token |
telegram-directory-page.unlock-directory-19472ad1 | Unlock directory |
telegram-directory-page.refresh-directory-c86d4509 | Refresh directory |
telegram-directory-page.lock-directory-f1fb4377 | Lock directory |
telegram-directory-page.add-a-contact-19897b38 | Add a contact |
telegram-directory-page.contact-type-9c37f4ab | Contact type |
telegram-directory-page.employee-14014e6a | Employee |
telegram-directory-page.provider-customer-or-employee-190795a5 | Provider customer or employee reference |
telegram-directory-page.agent-reference-optional-e50ffa16 | Agent reference (optional) |
telegram-directory-page.provider-login-username-c788fddd | Provider login username |
telegram-directory-page.telegram-username-optional-ee24897a | Telegram username (optional) |
telegram-directory-page.associated-bot-30f20420 | Associated bot |
telegram-directory-page.no-bot-association-4a96fe37 | No bot association |
telegram-directory-page.private-notes-72ff78fb | Private notes |
telegram-directory-page.save-contact-d24f121f | Save contact |
telegram-directory-page.cancel-edit-6fa27145 | Cancel edit |
telegram-directory-page.provider-account-evidence-36a9b916 | Provider account evidence |
telegram-directory-page.match-customers-using-agent-dcb505c9 | Match customers using agent ID, customer ID and exact login username. Telegram usernames, display names and shared IPs never establish account identity. Broad IP reports are excluded from weblog counts. |
telegram-directory-page.read-9b9a8d05 | Read |
telegram-directory-page.ct-ticker-d533c029 | CT · ticker |
telegram-directory-page.available-ddd9818a | available |
telegram-directory-page.modified-e2109d54 | · modified |
telegram-directory-page.weblog-archive-25f7dd75 | · weblog archive |
telegram-directory-page.partial-archive-window-8d3ea376 | · Partial archive window |
telegram-directory-page.counts-cover-the-retained-7827950a | Counts cover the retained ticker and a bounded sample within the last 24 hours. Missing observations are not proof of inactivity. Multiple logins or reused logins within an agent block automatic matching. |
telegram-directory-page.total-observed-account-scopes-cc29ced0 | total observed account scopes · |
telegram-directory-page.shown-baaf5362 | shown |
telegram-directory-page.first-200-only-use-3c203e3e | · first 200 only; use exact lookup below |
telegram-directory-page.lookup-agent-id-8a05a201 | Lookup agent ID |
telegram-directory-page.lookup-customer-id-8462b851 | Lookup customer ID |
telegram-directory-page.look-up-exact-account-7c1ef492 | Look up exact account |
telegram-directory-page.choose-from-4279f50e | Choose from |
telegram-directory-page.observed-accounts-6721c897 | observed accounts |
telegram-directory-page.wagers-bf426c6a | wagers · |
telegram-directory-page.weblog-observations-7c153d67 | weblog observations · |
telegram-directory-page.identity-conflict-22a3efc2 | Identity conflict |
telegram-directory-page.observed-account-1121a354 | Observed account |
telegram-directory-page.prepare-ee820467 | Prepare |
telegram-directory-page.contact-093e7d5f | contact |
telegram-directory-page.loading-provider-evidence-0f8278d5 | Loading provider evidence… |
telegram-directory-page.directory-192761b5 | Directory · |
telegram-directory-page.contacts-aa5af408 | contacts |
telegram-directory-page.search-people-8a7e7f1b | Search people |
telegram-directory-page.reference-6ffe5232 | · Reference |
telegram-directory-page.not-entered-8103c336 | not entered |
telegram-directory-page.agent-8f94361a | · Agent |
telegram-directory-page.unverified-5c0ece28 | ↗ · unverified |
telegram-directory-page.no-telegram-username-entered-7a274758 | No Telegram username entered. |
telegram-directory-page.provider-login-a11cfae7 | Provider login: |
telegram-directory-page.feed-match-5d7a7826 | · Feed match: |
telegram-directory-page.not-loaded-use-exact-1b1870ac | not loaded; use exact lookup |
telegram-directory-page.distinct-wagers-in-retained-b197a933 | distinct wagers in retained ticker · |
telegram-directory-page.value1-distinct-weblog-observations-ac52e2f6 | {value1} distinct weblog observations in the sampled 24-hour window |
telegram-directory-page.weblog-evidence-unavailable-4ae8fe67 | Weblog evidence unavailable |
telegram-directory-page.recent-wager-ids-159ab166 | Recent wager IDs: |
telegram-directory-page.last-weblog-timestamp-provider-2cb70615 | Last weblog timestamp (provider): |
telegram-directory-page.none-observed-05705fa0 | none observed |
telegram-directory-page.customer-login-account-activity-a62e6745 | Customer login & account activity |
telegram-directory-page.provider-weblog-observations-in-9f806a16 | Provider weblog observations in the bounded sample. This does not establish an active customer session; signing out here only ends workspace access. |
telegram-directory-page.no-directly-matched-activity-8148c445 | No directly matched activity in this sample. This does not prove inactivity. |
telegram-directory-page.bot-52fbad24 | Bot: |
telegram-directory-page.not-associated-7632707a | not associated |
telegram-directory-page.saved-b5c120b3 | Saved |
telegram-directory-page.revisions-437f95fd | revisions |
telegram-directory-page.edit-464c4ffd | Edit |
telegram-directory-page.no-contacts-match-this-0502756d | No contacts match this search. |
telegram-directory-page.no-contacts-saved-add-9f059776 | No contacts saved. Add a customer or employee above. |
telegram-directory-page.delivery-evidence-archive-7773aa6c | Delivery evidence archive |
telegram-directory-page.save-the-latest-25-08529558 | Save the latest 25 sidecar delivery attempts as an encrypted snapshot. This records statuses and redacted destinations, not message bodies, replies or proof that a recipient read a message. It is an explicit snapshot, not continuous capture. |
telegram-directory-page.archive-current-delivery-attempts-a82b1143 | Archive current delivery attempts |
telegram-directory-page.attempts-1ac7d61d | attempts |
telegram-directory-page.sidecar-observed-fe79722d | Sidecar observed |
telegram-directory-page.no-destination-e67e03da | No destination |
telegram-directory-page.topic-value1-f8f33d44 | / topic {value1} |
telegram-directory-page.no-attempts-returned-in-c16c5db5 | No attempts returned in this snapshot. |
telegram-directory-page.no-delivery-snapshots-saved-00bc03c8 | No delivery snapshots saved yet. Current attempts remain available in bot management. |
telegram-directory-page.directory-change-log-68f759f9 | Directory change log |
telegram-directory-page.immutable-revisions-retained-in-ae7e19da | Immutable revisions retained in private storage. Concurrent edits retain both revisions; the latest server timestamp is displayed. |
telegram-directory-page.saved-revision-6702bb95 | · saved revision |
telegram-directory-page.showing-latest-50-of-a3a9b15a | Showing latest 50 of |
telegram-directory-page.revisions-eec319aa | revisions. |
telegram-directory-page.no-directory-changes-recorded-26337504 | No directory changes recorded. |
directory-business-records.manual-deals-accounting-b2a94289 | Manual deals & accounting |
directory-business-records.deal-drafts-and-not-d253d236 | Deal drafts and not posted accounting observations. These records do not settle wagers, change provider balances or send payments. Customer identity is captured when selected and retained when editing the same customer. |
directory-business-records.record-type-91cf117b | Record type |
directory-business-records.deal-draft-fcee89a7 | Deal draft |
directory-business-records.accounting-observation-cbeb1b60 | Accounting observation |
directory-business-records.record-title-b02f8c22 | Record title |
directory-business-records.customer-contact-c4ad3b02 | Customer contact |
directory-business-records.no-customer-selected-4f89489a | No customer selected |
directory-business-records.amount-usd-24f52bfe | Amount (USD) |
directory-business-records.optional-304d9877 | · optional |
directory-business-records.record-notes-d21a3ccd | Record notes |
directory-business-records.save-record-revision-68b60aa4 | Save record revision |
directory-business-records.save-manual-record-1326971e | Save manual record |
directory-business-records.cancel-record-edit-80fe558f | Cancel record edit |
directory-business-records.accounting-observation-not-posted-f835488b | Accounting observation · not posted |
directory-business-records.amount-not-entered-c73a0308 | Amount not entered |
directory-business-records.saved-identity-value1-value2-38cd0ce4 | Saved identity: {value1} / {value2} / {value3} |
directory-business-records.no-customer-identity-attached-bbf032fb | No customer identity attached |
directory-business-records.retained-revisions-9fac7f81 | retained revisions |
directory-business-records.no-amount-b884dbf4 | No amount |
directory-business-records.value1-usd-cents-d27f0ae8 | {value1} USD cents |
directory-business-records.edit-record-20d0af43 | Edit record |
directory-business-records.no-manual-deals-or-48e556ba | No manual deals or accounting observations saved. |
agent-settings-page.lock-settings-ab0f2127 | Lock settings |
agent-settings-page.book-agreements-89e51956 | BOOK AGREEMENTS |
agent-settings-page.agent-settings-41cd6b4e | Agent settings |
agent-settings-page.define-what-stays-on-037f2449 | Define what stays on your book, and what settles with each agent. |
agent-settings-page.new-agreement-f09d5107 | New agreement |
agent-settings-page.drafts-do-not-affect-991e6cd2 | Drafts do not affect accounting. Confirmed agreements are saved as dated versions. Live positions and commission payments are not changed by this screen yet. |
agent-settings-page.loading-settings-e71a1345 | Loading settings… |
agent-settings-page.operator-access-key-763d14f5 | Operator access key |
agent-settings-page.unlocking-a4114da0 | Unlocking… |
agent-settings-page.unlock-settings-c3f37afc | Unlock settings |
agent-settings-page.try-loading-again-5350a631 | Try loading again |
agent-settings-page.confirmed-versions-501b5954 | confirmed versions |
agent-settings-page.drafts-bd949e87 | drafts |
agent-settings-page.player-overrides-take-priority-843d6d4d | Player overrides take priority within the same agent. |
agent-settings-page.review-agreement-44e55668 | Review agreement |
agent-settings-page.review-before-confirmation-e9637f14 | Review before confirmation |
agent-settings-page.i-verified-the-ids-d58c381d | I verified the IDs, percentages, commission terms, and effective dates. I approve these terms for this effective window; live accounting integration is still pending. |
agent-settings-page.confirm-agreement-4be29c18 | Confirm agreement |
agent-settings-page.cancel-review-87a8ca7f | Cancel review |
agent-settings-page.agreements-fa5fda37 | Agreements |
agent-settings-page.find-agent-or-player-54cec223 | Find agent or player |
agent-settings-page.reload-bdc090ec | Reload |
agent-settings-page.no-agreements-yet-66c5edd2 | No agreements yet |
agent-settings-page.start-with-an-agent-fafede02 | Start with an agent’s default agreement. Add a player override only when their terms differ. Unknown rates stay unknown. |
agent-settings-page.create-first-agreement-654ba142 | Create first agreement |
agent-settings-page.all-players-3ed06e8c | / All players |
agent-settings-page.keep-183f00f4 | Keep |
agent-settings-page.risk-8d8a4b77 | risk · |
agent-settings-page.winnings-db3fdd7f | winnings · |
agent-settings-page.commission-22c2ada6 | commission |
agent-settings-page.view-terms-0128c0a3 | View terms |
agent-settings-page.edit-draft-4452cbdb | Edit draft |
agent-settings-page.review-confirm-42555cac | Review & confirm |
agent-settings-page.use-as-new-version-97dc824b | Use as new version |
agent-settings-page.change-history-964de7c9 | Change history |
agent-settings-page.confirmation-is-recorded-as-1ad74244 | Confirmation is recorded as an operator action. The shared operator key does not identify an individual person. |
agent-settings-page.confirmed-agreement-99e821a9 | Confirmed agreement |
agent-settings-page.saved-draft-41c82369 | Saved draft |
agent-settings-page.applies-to-6687458b | Applies to |
agent-settings-page.all-players-980709dd | All players |
agent-settings-page.we-keep-7986b830 | We keep |
agent-settings-page.risk-d0c31ca6 | risk / |
agent-settings-page.winnings-6bced10b | winnings |
agent-settings-page.commission-3d41e1a6 | Commission |
agent-settings-page.settlement-711b5c6a | Settlement |
agent-settings-page.starts-value1-d39b0927 | , starts {value1} |
agent-settings-page.starts-on-day-1-78d2485b | , starts on day 1 |
agent-settings-page.loss-carry-forward-c9526162 | Loss carry-forward |
agent-settings-page.yes-85a39ab3 | Yes |
agent-settings-page.no-1ea442a1 | No |
agent-settings-page.effective-window-f5789820 | Effective window |
agent-settings-page.earlier-version-e12fd2a2 | Earlier version |
agent-settings-page.closes-the-selected-earlier-446ac69c | Closes the selected earlier agreement at this start time |
agent-settings-page.no-replacement-ca805fbf | No replacement |
agent-settings-page.notes-8a7525b1 | Notes |
agent-settings-page.new-version-7246e01b | New version |
agent-settings-page.who-this-agreement-covers-7a644f4c | Who this agreement covers |
agent-settings-page.fantasy402-agent-id-d0b1d8a6 | Fantasy402 agent ID |
agent-settings-page.provider-agent-id-2229d742 | Provider agent ID |
agent-settings-page.player-id-override-optional-50c12814 | Player ID override (optional) |
agent-settings-page.blank-applies-to-all-7ed92c0d | Blank applies to all players |
agent-settings-page.retained-shares-5e4ac4c0 | Retained shares |
agent-settings-page.enter-the-share-of-3dc6b097 | Enter the share of risk and winnings that stays on our book. Commission is separate. |
agent-settings-page.risk-we-keep-c12a0d6c | Risk we keep (%) |
agent-settings-page.winnings-we-keep-9e5dac40 | Winnings we keep (%) |
agent-settings-page.commission-and-settlement-6fc0bf74 | Commission and settlement |
agent-settings-page.commission-8e6de299 | Commission (%) |
agent-settings-page.commission-base-791d0030 | Commission base |
agent-settings-page.choose-a-base-68fb7502 | Choose a base |
agent-settings-page.payment-direction-ec8af214 | Payment direction |
agent-settings-page.choose-a-direction-c1120f24 | Choose a direction |
agent-settings-page.settlement-period-ea9c0282 | Settlement period |
agent-settings-page.daily-b36c2611 | Daily |
agent-settings-page.weekly-29751324 | Weekly |
agent-settings-page.monthly-calendar-month-6a91454b | Monthly (calendar month) |
agent-settings-page.weekly-period-starts-4ee6652f | Weekly period starts |
agent-settings-page.period-boundary-time-65f52d95 | Period boundary time |
agent-settings-page.time-zone-b9fe1464 | Time zone |
agent-settings-page.carry-losses-into-the-37d45f6c | Carry losses into the next settlement period |
agent-settings-page.period-boundaries-define-the-ec57d2d2 | Period boundaries define the accounting window, not an automatic payment. Commission bases must be reconciled before any amount is accrued. |
agent-settings-page.effective-dates-dc8d76ef | Effective dates ( |
agent-settings-page.effective-start-0c11e0be | Effective start |
agent-settings-page.effective-end-optional-146f830f | Effective end (optional) |
agent-settings-page.replace-an-earlier-agreement-5d971485 | Replace an earlier agreement |
agent-settings-page.agreement-notes-b5a6fd0c | Agreement notes |
agent-settings-page.use-a-replacement-to-65199f76 | Use a replacement to change an open-ended agreement. The prior version closes at this start time and remains in history. |
agent-settings-page.save-draft-3de10010 | Save draft |
agent-settings-page.cancel-19766ed6 | Cancel |
sentinel-diagnostics.live-sentinel-observations-6cbb27df | Live Sentinel observations |
sentinel-diagnostics.leave-blank-to-reuse-64c1346a | Leave blank to reuse Desk session |
sentinel-diagnostics.connect-observations-6e0f2909 | Connect observations |
sentinel-diagnostics.disconnect-observations-23d21358 | Disconnect observations |
sentinel-diagnostics.no-observation-events-displayed-26494be3 | No observation events displayed. |
telegram-volume-controls.message-volume-b0f828d9 | Message volume |
telegram-volume-controls.choose-which-automatic-cards-a2444ed7 | Choose which automatic cards can reach any destination. Checked categories still need matching routes and thresholds. Turning a category off also stops updates to its digest cards. |
telegram-volume-controls.automatic-message-categories-ae1e4558 | Automatic message categories |
telegram-volume-controls.repeat-interval-seconds-0205a2da | Repeat interval (seconds) |
telegram-volume-controls.the-interval-suppresses-repeats-e419496b | The interval suppresses repeats of the same alert, not all messages to a chat. Market digests update one card during a burst. Turn-ins remain separate and use People & routes. |
telegram-volume-controls.saving-23e39291 | Saving… |
telegram-volume-controls.save-message-controls-4ec78dff | Save message controls |
telegram-management.telegram-account-management-04e35e6c | Telegram & account management |
telegram-management.contacts-balances-16541351 | Contacts & balances |
telegram-management.manage-the-same-sidecar-bf4d6a26 | Manage the same sidecar bot and alert registry used by Desk. This dashboard does not start another poller or send messages automatically. |
telegram-management.mini-app-desktop-topic-7f3ef08f | Mini App, desktop & topic guide |
telegram-management.in-a-private-bot-7a3c3b3b | In a private bot chat, send |
telegram-management.desk-27dfb5c3 | /desk |
telegram-management.to-open-the-mini-a1087868 | to open the Mini App. In a group or topic, the same command opens the desktop Desk. Both use the existing bot and routing registry; operator access is still required for private management. |
telegram-management.add-your-bot-to-6707c94e | Add your bot to the group and enable Topics. |
telegram-management.give-the-bot-manage-885bd791 | Give the bot Manage Topics permission, then send |
telegram-management.setup-ffd42e51 | /setup |
telegram-management.as-a-registered-manager-e4505f97 | as a registered manager. |
telegram-management.use-c36d819e | Use |
telegram-management.routes-9a156fff | /routes |
telegram-management.to-inspect-destinations-and-aaa9b036 | to inspect destinations and |
telegram-management.legend-14c3c126 | /legend |
telegram-management.for-message-symbols-use-c803fd3d | for message symbols. Use People & routes below to edit filters. |
telegram-management.loading-private-management-0d79a679 | Loading private management… |
telegram-management.management-operator-key-2ce4b2b4 | Management operator key |
telegram-management.unlock-management-16d059c7 | Unlock management |
telegram-management.read-at-a4874894 | Read at |
telegram-management.ct-refresh-to-check-85ca3a33 | CT · refresh to check changes |
telegram-management.refresh-management-9b55055f | Refresh management |
telegram-management.lock-management-640055c4 | Lock management |
telegram-management.management-views-21a3cb86 | Management views |
telegram-management.connected-bot-0f43524e | Connected bot |
telegram-management.bot-identity-not-available-efaaf0a1 | Bot identity not available |
telegram-management.bot-id-1e6129bd | Bot ID: |
telegram-management.unknown-b764cdc0 | Unknown |
telegram-management.configured-388893e6 | Configured: |
telegram-management.update-poller-running-at-f5528227 | Update poller running at read time: |
telegram-management.only-the-bot-connected-78a94797 | Only the bot connected to this sidecar is listed. Credentials stay on the server. |
telegram-management.shared-alert-routing-ba339ab4 | Shared alert routing |
telegram-management.approved-chats-b094a05c | approved chats · |
telegram-management.enabled-routes-4f876aee | enabled routes |
telegram-management.outstanding-turn-ins-c127abdf | outstanding turn-ins · |
telegram-management.overdue-0c2b22d2 | overdue · |
telegram-management.acknowledged-3ef25c84 | acknowledged |
telegram-management.an-enabled-route-still-60c28940 | An enabled route still needs an approved chat and matching filters. It does not prove Telegram delivery succeeded. |
telegram-management.recent-sidecar-delivery-attempts-4b7d6107 | Recent sidecar delivery attempts |
telegram-management.latest-8730d3c2 | Latest |
telegram-management.retained-attempts-this-is-27dc676c | retained attempts. This is the sidecar record, separate from browser preview messages. |
telegram-management.no-attempts-returned-this-46d1c579 | No attempts returned. This does not prove earlier history is empty. |
telegram-management.these-edits-change-the-4253a140 | These edits change the existing bot registry. Contacts entered on agent profiles do not grant these permissions. |
telegram-management.delivery-readiness-9a12d24c | Delivery readiness |
telegram-management.whole-chat-cd0e5a32 | / whole chat |
telegram-management.ready-for-matching-events-66a3bba6 | Ready for matching events |
telegram-management.blocked-chat-approval-needed-e40f6276 | Blocked: chat approval needed |
telegram-management.paused-e159b061 | Paused |
telegram-management.no-routes-yet-run-a9014853 | No routes yet. Run /setup in your group or link a destination below. |
telegram-management.contacts-linked-to-the-292ca29d | Contacts linked to the bot registry |
telegram-management.username-not-entered-ff41ad0e | Username not entered |
telegram-management.telegram-id-a9f2270d | · Telegram ID |
telegram-management.no-id-5518a24c | no ID |
telegram-management.user-id-registered-f50e7d31 | User ID registered: |
telegram-management.unverified-33c8e8de | Unverified |
telegram-management.agent-scope-matches-2cf07c3d | · Agent scope matches: |
telegram-management.not-verified-15133907 | Not verified |
telegram-management.username-matches-last-bot-330a4828 | Username matches last bot observation: |
telegram-management.group-approved-404c5d89 | · Group approved: |
telegram-management.no-unverified-ddcdd45a | No / unverified |
telegram-management.enabled-routes-in-this-d7bff0b0 | enabled routes in this group/topic |
telegram-management.no-contact-profiles-entered-096dab30 | No contact profiles entered. |
telegram-management.agent-settlement-balances-70931b60 | Agent settlement balances |
telegram-management.player-account-balances-3f916293 | Player account balances |
telegram-management.positive-agent-owes-us-3bf62203 | Positive: agent owes us. Negative: we owe the agent. |
telegram-management.positive-player-credit-negative-9463c621 | Positive: player credit. Negative: player debt. |
telegram-management.confirmed-manual-observation-750cf69f | · confirmed manual observation |
telegram-management.edit-private-contacts-and-8743128c | Edit private contacts and record balances |
telegram-management.shared-sidecar-alert-rules-4cc1c87c | Shared sidecar alert rules |
telegram-management.changes-apply-to-the-27be719f | Changes apply to the bot’s existing automation. Quiet-hour interpretation and message formatting stay with that automation. |
telegram-management.alerts-and-thresholds-bbad63b6 | Alerts and thresholds |
telegram-management.high-alerts-enabled-3c490b16 | High alerts enabled |
telegram-management.health-alerts-enabled-f37bb757 | Health alerts enabled |
telegram-management.steam-minimum-books-c9667fb4 | Steam minimum books |
telegram-management.sharp-wager-threshold-usd-6236627e | Sharp wager threshold (USD) |
telegram-management.turn-in-threshold-usd-024df59c | Turn-in threshold (USD) |
telegram-management.throttle-seconds-6a2bcd6e | Throttle (seconds) |
telegram-management.acknowledgment-sla-seconds-05009383 | Acknowledgment SLA (seconds) |
telegram-management.use-quiet-hours-6cff3cff | Use quiet hours |
telegram-management.quiet-hours-start-0-1c9c0002 | Quiet hours start (0–23) |
telegram-management.quiet-hours-end-0-82938c64 | Quiet hours end (0–23) |
telegram-management.save-shared-alert-rules-41c0a587 | Save shared alert rules |
opportunity.title | Play review and ROI |
opportunity.tab | PLAY REVIEW / ROI |
opportunity.event | Event |
opportunity.sport | Sport |
opportunity.market | Market type |
opportunity.agent | Routing agent |
opportunity.strategy | Strategy |
opportunity.evidence | Evidence |
opportunity.related | Related tickets |
opportunity.review | Review state |
opportunity.review-for | Review state for {event} |
opportunity.settlement | Result state |
opportunity.live-scanner | Verified live comparison ranking |
opportunity.live-expiry-note | Eligibility expires as quotes and fair estimates age or reviewed execution terms expire. This view rechecks freshness locally; refresh comparisons to request new source evidence. A browser clock ahead or behind the source may block results. |
opportunity.live-scanner-note | Ranked by expected net profit, then quote freshness. Eligibility depends on reviewed market, settlement, provider times, full-stake depth and exact fees; it does not guarantee a return. No orders or messages are sent. |
opportunity.live-edge | {venue} · net EV {ev}% · expected profit {profit} · assessed stake {stake} |
opportunity.live-evidence | Market: {market}. Venue: {venue}. Sharp venue: {sharp}. Fee source: {fees}. |
opportunity.live-unavailable | Scanner results are unavailable from this sidecar version. Refresh after the matching sidecar update. |
opportunity.saved-local | Review choices stay on this browser for 30 days, across panel closes and reloads. They do not sync between devices. |
opportunity.save-unavailable | Browser storage is unavailable. Review choices remain in memory and may be lost when this panel closes. |
opportunity.source-note | REPLAY tape only. Review choices are saved on this browser for 30 days; approval does not send a message or place a wager. Sent receipts remain in Outbox. Settlement is independent. Strategy attribution is unavailable on this tape. |
opportunity.search | Search sport, market, agent or strategy |
opportunity.all | All review states |
opportunity.fees | Model replay with zero fees (explicit assumption) |
opportunity.rows | {n} tickets in this view |
opportunity.roi | Replay net ROI: {roi} on {n} eligible settlements |
opportunity.profit | Replay net profit: {amount} |
opportunity.open | Open replay stake: {amount} |
opportunity.excluded | Excluded: {n}; unknown fees: {fees} |
opportunity.empty | No matching tickets. Clear search or change review state. |
opportunity.rating-note | Evidence completeness out of four checks, not confidence or estimated edge. |
opportunity.ticket | Inspect ticket |
opportunity.performance | Signal performance by source and strategy |
opportunity.performance-note | Fewer than 50 eligible results and finalized closes remain unproven. Drawdown is observed replay net loss from a previous peak; these results do not predict future returns. |
opportunity.scanner | Edge validation: {n} eligible / {blocked} blocked |
opportunity.scanner-note | This replay tape lacks verified executable quotes, canonical market joins, fair-price provenance and fee terms. No live edge is inferred. The scanner ranks verified inputs by estimated net value and freshness. |
opportunity.draft | Telegram review draft |
opportunity.draft-note | Review-only HTML draft. No destinations or private ticket identifiers. Nothing is sent. |
opportunity.channel | Source channel |
opportunity.signal-row | {mode} · {strategy} · {status} · {n} results · ROI {roi} · CLV {clv} · Drawdown {drawdown} |
opportunity.period | Placement window |
opportunity.all-periods | Entire replay tape |
opportunity.hour | Past replay hour |
opportunity.four-hours | Past four replay hours |
opportunity.day | Past replay day |
opportunity.breakdown | ROI breakdown by sport, agent and strategy |
opportunity.breakdown-row | {name} · {n} eligible settlements · Net ROI {roi} · Net profit {amount} · Drawdown {drawdown} |
Literals
Text a component writes itself instead of reading from this file. bun run cli site literals [file] lists each one with its line: JSX text, a string or template rendered as a child ({on ? "ON" : "OFF"}), the title, aria-label, aria-description, placeholder, alt and label attributes, and the same names as object fields (title, label, placeholder, alt, ariaLabel, tip, hint), which a column spec or menu item hands to an element. JSX text counts as it prints (< is <). Text with no letter is not copy.
A file not listed below may write none. A listed file may write up to its number, and the number only comes down: bun run cli site --write lowers it to what is left and ticks the file at zero. A literal that is not copy (a code sample, a proper name the data supplies) goes in the allow table with its reason.
| Literal | File | Reason |
|---|---|---|
Bun.markdown | src/components/docs/docs-shell.tsx | A runtime API name printed as code, the same in every language |
compact | src/components/desk/health-page.tsx | The compacted file name the archive writes, printed as code |
DESK_ARCHIVE_DIR | src/components/desk/health-page.tsx | An environment variable name printed as code |
part-MMSSmmm-<hash> | src/components/desk/health-page.tsx | The part file name pattern the flush writes, printed as code |
Open literals by file (715 when the rule landed):
- ☑
src/components/brand.tsx - ☑
src/components/desk/activity.tsx - ☑
src/components/desk/bet-modal.tsx - ☑
src/components/desk/book-pop.tsx - ☑
src/components/desk/books-panel.tsx - ☑
src/components/desk/charts.tsx - ☑
src/components/desk/command-wall.tsx - ☑
src/components/desk/data-screen.tsx - ☑
src/components/desk/event-modal.tsx - ☑
src/components/desk/filter-bar.tsx - ☑
src/components/desk/games-table.tsx - ☑
src/components/desk/globe.tsx - ☑
src/components/desk/health-page.tsx - ☑
src/components/desk/labels.tsx - ☑
src/components/desk/move-graph.tsx - ☑
src/components/desk/notify.tsx - ☑
src/components/desk/odds-tools.tsx - ☑
src/components/desk/overlays.tsx - ☑
src/components/desk/sharp-review.tsx - ☑
src/components/desk/table-kit.tsx - ☑
src/components/desk/ticker-grade-board.tsx - ☑
src/components/docs/doc-view.tsx - ☑
src/components/docs/docs-shell.tsx - ☑
src/components/home/feed-pills.tsx - ☑
src/components/home/overview.tsx - ☑
src/components/key-sheet.tsx - ☑
src/components/risk/ip-tracker.tsx - ☑
src/components/security/focus-panel.tsx - ☑
src/components/security/remix-globe.tsx - ☑
src/components/security/security-desk.tsx - ☑
src/components/security/timing-graph.tsx - ☑
src/components/theme-switch.tsx
Settings
| Setting | Value | Note |
|---|---|---|
site.url | https://desk.bookdeskops.com | Canonical origin for every page |
theme.default | dark | Theme before the visitor picks one |
theme.storage | ops.theme | localStorage key for the visitor's pick |
storage.play-review | desk.play-review.v1 | Replay review choices, bounded to 1000 ticket identities for 30 days |
storage.prefs | desk.prefs.v1 | Desk view: names, odds format, window, devig method |
storage.filter | desk.filter.v1 | Desk bet-feed filters |
storage.sharps | desk.sharps.v1 | Manual sharp overrides |
storage.books | desk.books.v1 | Book columns on the odds grid |
storage.notify | desk.notify.v1 | Telegram routes and mutes |
storage.notify-health | desk.notify.health.v1 | Last Telegram health check |
storage.rules | desk.rules.v1 | Alert thresholds and pattern rules |
storage.table | desk.table.{id}.v1 | One desk table's sort, group and column layout |
storage.panes | desk.panes.{id}.v1 | One panel group's sizes after a drag |
Flags
A ticked box is on. bun run cli site flag <name> on|off ticks or clears it and regenerates.
- ☑
theme.systemSystem is in the theme cycle and the switch - ☑
theme.contrastContrast is in the theme cycle and the switch - ☑
keys.pagesNumber keys jump between pages - ☑
keys.globalThe theme key and the shortcut sheet work outside the desk