Docs · Site map

Sports Operations Docs · Site map, home

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.

RouteNameNavKeyDescription
/OverviewOverview1Feed status, every desk surface with its key and a deep link, the security model, words and fields.
/deskDeskDesk2Board, line movers, bet feed, wager graphs and the data screens, on the replay tape or the live sidecar.
/securitySecurity modelSecurity3The measured rules behind every flag: integer cents, the weblog join, alert twins, self-bets and edge pins.
/ipIP logIP log4Manager getWebLog rows by agent and customer, with the scheduled extract and session renewal.
/healthHealthHealth5Server checks, token age, the last ticker and board pulls, R2, Telegram, the sidecar and the data dictionary.
/agentsAgent settingsAgent settings-Private agreements, agent contacts and separate manual balance observations.
/directoryPeople directoryPeople directory-Private customer and employee contacts, bot references, exact account evidence and workspace sessions.
/credentialsEnvironment & keysEnvironment & keys-Encrypted project variables, keys and passwords with explicit reveal and operator access.
/workbenchStyles & checksStyles & checks-Theme previews, repository verification records, Bun feature usage and sample controls.
/docsDocsDocs6The 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.

ThemeLabelNote
systemSystemFollows prefers-color-scheme and prefers-contrast
darkDarkThe :root palette in src/styles.css
lightLight[data-theme="light"]
contrastContrast[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.

ActionScopeKeyWhat
themeglobalcCycle the theme: System, Dark, Light, Contrast
keysglobal?Shortcut sheet: every key on this page
closeglobalEscClose the top panel or sheet
namesdesknTeam names: short ↔ long
oddsdeskoOdds format: American → Decimal → Asian (HK) → Prediction ¢
devigdeskdDevig calculator for the selected game
windowdeskwWager window: 15M → 1H → 4H → 24H
odds-tabdesksOdds snapshot for the selected game
screen.4cdeskb4C 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.griddeskgOdds grid: HANDLE, SHARP % and off-market, then each book's price
screen.f402deskfF402 ticker: SCORE on each wager. Expand for the LOGIN rows and who MATCHES
screen.accountsdeskaAccounts: SCORE. Expand for LOGIN rows, SESSIONS and who MATCHES
screen.positionsdeskpPositions: HANDLE per side, SHARP % and EXCH
screen.patternsdeskmPattern flags. Expand for each named account's SCORE, LOGINS and MATCH
screen.alertsdesklAlerts and the thresholds that fire them
screen.securitydeskeSecurity: SCORE, LOGINS, SESSIONS, IPS and MATCH. Expand for the rows
telegramdesktTelegram notifications and turn-ins: people, routes, digests and acks for the sidecar bot
reviewdeskrSharp 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.

URLOpens
/desk?screen=4c4C board
/desk?screen=gridOdds grid
/desk?screen=f402F402 ticker
/desk?screen=accountsAccounts
/desk?screen=positionsPositions
/desk?screen=patternsPattern flags
/desk?screen=alertsAlerts and rules
/desk?screen=securitySecurity
/desk?open=telegramTelegram notifications and turn-ins
/desk?open=picksTelegram on its ALGO PICKS tab
/desk?open=reviewSharp Review
/desk?open=keysShortcut sheet
/desk?open=devigDevig 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

SectionRouteTitleSubtitle
capture.002/securityWager-
capture.003/securityAlert-
capture.012/securityVisual annotations · local to this inspector-
capture.018/securityTiming relative to alert-
capture.024/securityEvidence needed before scoring-
capture.027/securityExchange depth for this stake-
capture.051/securitySharper-book price comparison-
capture.061/securityAlert comparison lab-
capture.066/securityReal wager comparisons-
capture.086/securityEstimated net value ·-
capture.100/securityArchived 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/WordsOne label, one color, one use. The same word means the same thing on every screen and in Telegram.
overview.fields/FieldsCounts and rates over stored rows. The count is never a second stored column.
security.windows/securityWindows-
security.timing/securityTiming graph-
security.match/securityTwin matchThe views join an ALERT to an Internet row on login and cents. They do not join on a ticket id.
security.edges/securityView edgesWhere the warehouse views cut, and what the join leaves out.
security.proof/securityView testThese rows are the SQL fixture. They prove the views. They are not the published book.
security.pins/securityEdge pins-
security.screen/securitySecurity screen-
security.words/securityWords-
ip.source/ip-Manager getWebLog · live renew via System/renewToken
notfound.main-Nothing hereThis address is not a page on the desk. Every page is one of these:
error.main-Something went wrong-

Health

SectionRouteTitleSubtitle
health.server/healthSERVER CHECKSLIVE · /_serverFn getHealth
health.api/healthAPI STATUSRECORDED AUDIT · {date}
health.dictionary/healthDATA DICTIONARY-
health.feed/health-{feed}
health.tables/healthDESK TABLES-
health.jobs/healthSCHEDULED JOBSBUN.CRON · ONE RUN AT A TIME · NEXT FIRE IN ET
health.archive/healthARCHIVE PIPELINE{target} · {codec} NDJSON · PARTITIONED BY UTC HOUR
health.log/healthHEALTH LOGCHECK REPORTS + STATUS CHANGES · THIS SESSION · ET

Desk wall

SectionRouteTitleSubtitle
wall.left/deskLIVE BOARD-
wall.right/deskSIGNALS-
wall.handle/deskMARKET HANDLESHARE OF 24H HANDLE
wall.handle.sport/desk-{sport} · LEAGUES
wall.board/deskLIVE BOARD{games} · ROT · SCORE · LINE
wall.bets/deskBET FEEDLAST {window}
wall.ratings/deskRATINGSTIMING VS LINE MOVES · LIVE
wall.logs/deskLOGS-
wall.movers/deskTOP LINE MOVERS-
wall.alerts/deskALERT FEED-
wall.sharps/deskSHARP DESKCLICK FOR REVIEW
wall.ticker/deskSHARP INDEX-

Desk screens and overlays

SectionRouteTitleSubtitle
overlay.telegram/deskTELEGRAM-
overlay.devig/deskDEVIG-
overlay.keys/deskSHORTCUTS-
overlay.review/deskSHARP REVIEWREPLAY {clock}
overlay.screen/deskDATA SCREENREPLAY {clock}
overlay.review.roster/deskROSTEREvery 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/deskSHARP CONSENSUSOpen 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/deskSHARP TICKETSEach 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/deskHOW THEY'RE DOINGWagers 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/deskBUBBLEAccounts 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/deskMANUAL OVERRIDESDesk decisions in force, newest first.
screen.4c.board/desk4C BOARDEvery 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/deskODDS GRIDBoth 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/deskF402 TICKERThe 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/deskACCOUNTSReplay 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/deskPOSITIONSThe 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/deskPATTERN RULESNamed 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/deskFLAGSEach 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/deskTHRESHOLDSSaved 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/deskACTIVE NOWThresholds crossed at the current tick. Expand for the measured value against its limit.
screen.alerts.fired/deskFIREDThresholds 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/deskSHARED-IP CLUSTERSSHARED 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/deskCHANNEL MIXWagers and risk by intake channel across the replay tape.
screen.security.access/deskACCOUNT ACCESSSharp 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/deskOFF-MARKET LINE-
screen.alerts.heavy/deskHEAVY ACTION-
screen.alerts.position/deskPOSITION-
screen.alerts.pattern-rules/deskPATTERN RULES-
screen.alerts.routing/deskROUTING-
overlay.bet.ticket/deskTICKET #{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.

TableLabel
wall.ipsIP addresses
wall.lanesAccount lanes
wall.weblogWeblog
bet.booksBook snapshot
wall.alertsAlert feed
wall.betsBet feed
wall.boardLive board
wall.handleMarket handle
wall.logsLogs
wall.moversLine movers
wall.ratingsRatings
wall.sharpSharp desk
wall.tapeWager tape
wall.timelineMoves and bets
ds.accessAccount access
ds.accountsAccounts
ds.acct-ticketsRecent tickets
ds.activeActive thresholds
ds.board4C board
workbench-sample-v1Sample records
ds.channel-ticketsChannel tickets
ds.channelsChannel mix
ds.evidenceEvidence
ds.f402F402 ticker
ds.firedFired alerts
ds.flag-acctsAccounts named on this flag
ds.flagsPattern flags
ds.game-ticketsGame tickets
ds.gridOdds grid
ds.legsTicket legs
ds.login-rowsLogin rows
ds.match-rowsMatching accounts
ds.positionsPositions
ds.quotesBook quotes
ds.sharedipShared IPs
ds.sideSide accounts
event.accountsTop accounts
event.sidesSides and markets
event.ticketsEvent tickets
wall.gamesAll games
wall.games.betsWagers on this line
notify.outboxOutbox
notify.picksAlgo picks
notify.opportunitiesOpportunity review
notify.turninsTurn-ins
devig.methodsDevig methods
wall.snapshotOdds snapshot
profile.ticketsProfile tickets
wall.patternsCorrelation patterns
sr.bubblesBubble sharps
sr.consensusSharp consensus
sr.perfSharp performance
sr.rosterSharp roster
sr.ticketsSharp 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.

ColumnLabelShort
accountACCOUNTACCT
accountsACCOUNTSACCTS
ack-rateACK RATE-
ackedACKED-
afterAFTER-
after-gapAFTER GAP-
age-ackAGE / ACK-
agentAGENT-
aheadAHEAD-
alertALERT-
alertsALERTS-
at@-
avgAVG-
avg-clvAVG CLV · STRAIGHTS-
avg-gapAVG GAP-
avg-gradeAVG GRADE-
avg-ratingAVG RATING-
awayAWAY-
beatBEAT-
beat-closeBEAT CLOSE-
beat-lifeBEAT LIFE-
beforeBEFORE-
bestBEST-
best-evBEST EV-
bet-evBET EV-
bet-lineBET LINE-
bet-priceBET PRICE-
bet-typeBET TYPE-
bookBOOK-
book-classBOOK CLASS-
book-needsBOOK NEEDS-
book-rankBOOK RANK-
booksBOOKS-
budgetBUDGET-
changeCHANGE-
channelsCHANNELS-
checkCHECK-
cityCITY-
classCLASS-
close-evCLOSE EV-
close-lineCLOSE LINE-
close-priceCLOSE PRICE-
clvCLV-
clv-24hCLV 24H-
clv-lifeCLV LIFE-
clv-life-syntheticCLV LIFE*-
clv-trendCLV TREND-
codeCODE-
confidenceCONFIDENCECONF
confirmCONFIRM-
customersCustomers-
dataData-
delta-consΔ CONS-
destinationDESTINATION-
detailDETAIL-
earlyEARLY-
endpointENDPOINT-
endpoint-pathENDPOINT / PATH-
ev-at-betEV AT BET-
ev-at-closeEV AT CLOSE-
eventEVENT-
evidenceEVIDENCEEVID.
exchEXCH-
expected-responseEXPECTED RESPONSE-
fairFAIR-
fair-aFAIR A-
fair-at-betFAIR @ BET-
fair-at-closeFAIR @ CLOSE-
fair-bFAIR B-
firstFIRST-
first-bookFIRST BOOK-
first-seenFIRST SEEN-
flagFLAG-
flagsFLAGS-
gameGAME-
gamesGAMES-
gradeGRADEGR
gradedGRADEDN
handleHANDLE-
handle-aHANDLE A-
handle-bHANDLE B-
hitHIT-
holdHOLD-
homeHOME-
hubHUB-
hubsHUBS-
ipIP-
ip-listIP LIST-
ip-riskIP RISK-
ip-typeIP · TYPE-
ipsIPS-
jobJOB-
kindKIND-
lagLAG-
lastLAST-
last-loginLAST LOGIN-
last-pollHEALTH OBSERVATION-
lateLATE-
latencyLATENCY-
leagueLEAGUELG
legLEG-
levelLEVEL-
life-ratingLIFE RATINGLIFE
lifetime-syntheticLIFETIME*-
lineLINE-
line-riskLINE / RISK-
line-sinceLINE SINCE-
loginLogin-
loginsLOGINS-
marketMARKETMKT
marketsMARKETS-
matchMATCH-
median-ackMEDIAN ACK-
methodMETHOD-
moveMOVE-
move-gapMOVE / GAP-
move-sinceMOVE SINCE-
movesMOVES-
moves-firstMOVES FIRST-
moves-todayMOVES TODAY-
nextNEXT-
noteNOTE-
nowNOW-
oddsODDS-
of-sideOF SIDE-
off-marketOFF MARKETOFF MKT
openOPEN-
open-expOPEN EXP-
operationOperation-
orphanORPHAN-
otherOTHER-
outstandingOUTSTANDING-
over-slaOVER {min} MIN-
overrideOVERRIDE-
p50P50-
p95P95-
parlayPARLAY-
passedPASSED-
pickPICK-
picks-sentPICKS SENT-
plP/L-
pl-24hP/L 24H-
pl-bettorP/L (BETTOR)-
placedPLACED-
positionPOSITION-
prefixPREFIX-
pricePRICE-
price-aPRICE A-
price-bPRICE B-
pts-vs-closePTS VS CLOSE-
purposePURPOSE-
rankRANK#
rateRATE-
ratingRATING-
reasonREASON-
requestREQUEST-
resultRESULT-
retainRETAIN-
riskRISK-
risk-24hRISK 24H-
roiROI-
roi-24hROI 24H-
roi-lifeROI LIFE-
roi-life-syntheticROI LIFE*-
rotROT-
rowsROWS-
ruleRULE-
runnerRUNNER-
scheduleSCHEDULESCHED
scoreSCORE-
segmentSEGMENT-
segment-tagsSEGMENT · TAGS-
self-betSELF-BET-
sentSENT-
sessionSESSION-
sessionsSESSIONS-
settledSETTLED-
severitySEVERITY-
shareSHARE-
sharedSHARED-
shared-ipShared IP-
sharpSHARP-
sharp-pctSHARP %-
sharp-riskSHARP RISK-
sharp-shareSHARP SHARE-
sharpsSHARPS-
sideSIDE-
side-aSIDE A-
side-bSIDE B-
side-marketSIDE · MARKET-
signalSIGNAL-
slaSLA-
sourceSOURCE-
spanSPAN-
sportSPORT-
stakeSTAKE-
staleSTALE-
stateSTATE-
statusSTATUS-
streamSTREAM-
subjectSUBJECT-
tableTABLE-
tagTAG-
this-sideTHIS SIDE-
ticketTICKET-
ticketsTICKETSTKT
tickets-24hTICKETS 24HTKT 24H
timeTIME-
timingTIMING-
timing-mixTIMING MIX-
to-winTO WIN-
to-win-24hTO WIN 24H-
todayTODAY-
top-leagueTOP LEAGUE-
trendTREND-
turn-insTURN-INS-
typeTYPE-
velocityVELOCITY-
volumeVOLUME-
vs-closeVS CLOSE-
vs-cutVS CUT-
wagerWAGER-
wager-takenWAGER · TAKEN-
wagersWAGERS-
whatWHAT-
whenWHEN-
whoWHO-
whyWHY-
window-24h24H WINDOW-
worst-caseWORST CASE-
zoneZONE-

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.

MessageText
accounts.noneNO ACCOUNTS
accounts.none-matchNO ACCOUNTS MATCH
accounts.none-namedNO NAMED ACCOUNTS
alerts.none-24hNO ALERTS IN 24H · REAL MOVES POST HERE
alerts.none-crossedNO THRESHOLD CROSSED · LIMITS IN ALERTS & RULES
alerts.none-firedNOTHING FIRED YET · LOWER A THRESHOLD TO SEE ONE
alerts.none-matchNO ALERTS MATCH
alerts.none-overNOTHING OVER THRESHOLD
bet.no-gradeNO GRADE · LEG IS NOT ON A TRACKED MARKET
book.moves-none-heldNO MOVES · HELD THE NUMBER
book.moves-none-marketNO MOVES ON THIS MARKET
books.none-quotedNO BOOKS QUOTED
devig.need-pricesENTER TWO VALID PRICES
event.noneNO WAGERS LOGGED ON THIS EVENT
event.none-24hNO WAGERS LOGGED ON THIS EVENT IN THE 24H TAPE
evidence.noneNO EVIDENCE
evidence.none-ticketNO TICKET-LEVEL EVIDENCE · THE REASON ABOVE IS THE MEASUREMENT
flags.noneNO FLAGS
flags.none-ruleNO FLAGS FOR THIS RULE
games.noneNO GAMES ON THE BOARD
games.none-matchNO GAMES MATCH
games.none-trackedNO TRACKED GAMES IN {where}
games.none-tracked-allNO TRACKED GAMES IN ALL MARKETS
graph.no-printsNO PRINTS ON THIS LINE
graph.no-wagersNO WAGERS ON THIS 4C LINE
graph.no-weblogNO WEBLOG ROWS FOR THIS SESSION
graph.no-window-wagersNO WAGERS IN THIS WINDOW
health.first-checkRUNNING FIRST CHECK…
health.passingLast completed report: {ok}/{n} checks passed; not an availability measurement
health.unreachableHealth endpoint unreachable · {error}
ip.extract-loadingLoading the latest extract…
ip.extract-noneNo scheduled extract yet
ip.extract-statusExtract {pass} · {written} written · {skipped} unchanged · {rows} rows · {at}
ip.noneYour search returned no results
ip.sessionSession {life}
ip.session-refreshingSession {life} · refreshing
ip.shared-noneNo shared addresses in the lake yet
ips.none-sharedNO SHARED IPS
ips.none-shared-accountNO OTHER ACCOUNT SHARES THESE IPS
kit.cappedSHOWING {limit} OF {total} · NARROW THE SEARCH
legs.noneNO LEGS
level.noneNOTHING AT THIS LEVEL
lines.best-none{book} has the best price on no line that matches
lines.none-searchNO LINES MATCH THE SEARCH
lines.none-search-tabsNO LINES MATCH THE SEARCH OR TABS
logins.none-24hNO LOGIN ROWS IN THE 24H TAPE
logins.none-accountNO LOGIN IN THE 24H TAPE
logs.idleLOGS IDLE
moves.none-historyNO MOVES IN HISTORY
moves.none-windowNO MOVES IN WINDOW
patterns.none-windowNO CORRELATION PATTERNS IN THE CURRENT WINDOW
patterns.not-evidenceNOT EVIDENCE FOR ANY PATTERN RULE
positions.noneNO POSITION
positions.none-gameNO OPEN POSITION
positions.none-openNO OPEN POSITIONS
quotes.noneNO QUOTES
ratings.noneNO RATINGS YET · NEW WAGERS AND RE-RATES POST HERE
rules.loadingDESK RULES LOADING
security.none-confirmNo confirm on the published security feed. A confirm is the closest Internet twin of the same login and stake inside 6 seconds.
security.none-lateNo 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-orphanNo 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-pairNo pair on the published security feed. A pair is an ALERT and its closest Internet twin inside 60 seconds.
security.none-publishNo pairs on this publish.
security.none-self-betNo 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-countThis count is waiting on the next ticker publish.
security.waiting-pairsPair bars are waiting on the next ticker publish.
sharps.noneNO SHARP ACCOUNTS
sharps.none-cutNO ACCOUNTS NEAR THE CUT
sharps.none-openNO OPEN SHARP STRAIGHTS
sharps.none-overridesNO OVERRIDES · EVERY SEGMENT COMES FROM THE SCORE
sharps.none-ticketsNO SHARP TICKETS MATCH
straights.none-openNO OPEN STRAIGHTS
tags.noneNO PATTERN LABELS
telegram.calls-noneNO CUSTOMER CALLS
telegram.chats-noneNO CHATS YET
telegram.mutes-noneNO MUTES
telegram.outbox-emptyOUTBOX EMPTY · MESSAGES APPEAR AS RULES FIRE
telegram.picks-noneNO PICKS SENT YET · THE ALGO IS ON PAPER UNTIL ITS RECORD BEATS THE CLOSE
telegram.registry-loadingLOADING THE SIDECAR REGISTRY…
telegram.registry-offPEOPLE AND ROUTES LIVE ON THE SIDECAR BOT · {reason}
telegram.turnins-noneNO TURN-INS YET · THEY POST AS PHONE AND LARGE TICKETS ARRIVE
tickets.none-24hNO TICKETS IN THE 24H TAPE
tickets.none-game-24hNO TICKETS ON THIS GAME IN THE 24H TAPE
tickets.none-sideNO TICKETS ON THIS SIDE
timeline.noneNO MOVES OR BETS ON THIS LINE
wagers.noneNO WAGERS
wagers.none-24hNO WAGERS IN 24H
wagers.none-filterNO WAGERS MATCH THE FILTER
wagers.none-game-marketNO WAGERS ON THIS GAME AND MARKET
wagers.none-lastNO WAGERS IN THE LAST {window}
wagers.none-match-lastNO WAGERS MATCH IN THE LAST {window}
wagers.none-windowNO WAGERS MATCH IN THIS WINDOW
weblog.none-windowNO WEBLOG EVENTS IN THIS WINDOW
workbench.no-sample-recordsNo 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.

StatText
bet.amountRISK {risk} · TO WIN {win}
bet.first-moveFIRST MOVE {t}
bet.last-moveLAST MOVE {t}
bet.pre5 MIN BEFORE {move}
bet.sinceSINCE {move}
bet.stableSTABLE {before} BEFORE · {after} AFTER
book.marketTHIS MARKET {market}
chart.day24H {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.fairFAIR {a} / {b}
event.last-moveLAST 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.4c4C {open} → {now}
line.historyLINE HISTORY · {market} · {side}
line.nowNOW {line}
line.openOPEN {line}
line.pathLINE {open} → {now}
pill.4c4C {state}
pill.deskDESK {clock}
pill.f402F402 {state}
pill.sidecarSIDECAR {state}
position.needNEED {need} · NET {net} · LIAB {a} {aLiab} / {b} {bLiab}
score.breakdownSCORE {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.compositeCOMPOSITE {line} · {fair}%
sharp.gapGAP {gap}
sharp.gap-fairGAP {gap} · {cents}¢ FAIR
sharp.ourOUR {line}
sharps.bubbleBUBBLE {n}
sharps.countSHARPS {n}
sharps.cutCUT {cut}
sharps.open-riskOPEN SHARP RISK {risk}
sharps.plP/L {pl} · ROI {roi}
sharps.sidesSIDES WITH SHARPS {n}
wall.avg-clvAVG CLV {clv}
wall.handle-24hHANDLE 24H {handle} · {tickets} TICKETS
wall.sharp-indexSHARP INDEX {n} ACTIVE · {games} GAMES
wall.vs-priorVS 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.

StateWordKindNote
segment.sharpSHARPvalueSharp score at or above the sharp cut (SHARP_CUT, src/desk/sharp-roster.ts).
segment.squareSQUAREvalueSharp score below the watch cut.
segment.watchWATCHvalueSharp score at or above the watch cut (WATCH_CUT) and below the sharp cut.
status.approvedAPPROVEDwordThe chat is approved to receive messages from the sidecar bot.
status.checkingCHECKINGwordThe first health check has not answered yet.
status.degradedDEGRADEDwordAt least one server health check warned and none failed.
status.downDOWNwordA health check failed, or a recorded API audit found the endpoint not answering.
status.dry-runDRY RUNwordNo bot token and no sidecar bot: messages are previewed, not sent.
status.finalFINALwordThe game has ended.
status.gapGAPwordA recorded API audit found the endpoint answering with a gap from the expected contract.
status.lateLATEwordA turn-in has waited past its ack SLA without an ack.
status.liveLIVEwordStreaming now: the feed is live, or the game is in play.
status.local-replayLOCAL REPLAYwordThe health page reads the local replay, not a deployed sidecar.
status.not-liveNOT LIVEwordThe feed is configured but not streaming; the desk shows the last tape.
status.offlineOFFLINEwordThe sidecar is not connected.
status.okOKwordA turn-in is inside its ack SLA.
status.operationalOPERATIONALwordEvery server health check passed.
status.pregamePREGAMEwordThe game has not started.
status.replayREPLAYwordThe desk is replaying the recorded tape, not a live source.
status.sidecarSIDECARwordThe data came from, or the job runs on, the sidecar process.
status.staleSTALEwordA replay health source answered, but not recently.
status.tickTICK {n}wordThe sidecar is connected; {n} is its last tick.
status.token-setTOKEN SETwordA Telegram bot token is set on the server; the chip shows the bot name once it answers.
status.upUPwordA 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.

CopyText
telegram.categorySend {kind} alerts
repos.unavailableRepository check feed could not be read.
repos.refreshRefresh repository checks
repos.descriptionBranding and metadata checks for registered repositories. Only changes are checked; repeated failures stay quiet.
repos.observedLast observed: {time}
capture.001Evidence for alert {v0}
capture.004SYNTHETIC LAB
capture.005ADAPTER INPUT
capture.006MEASURED SAMPLE
capture.007Stake
capture.008· Internet minus alert
capture.009unavailable
capture.010{v0}s
capture.011. Timing proximity alone does not establish the same market or an exploit.
capture.013Show marks and alignment
capture.014Connect quote snapshots
capture.015Timing mark (seconds)
capture.016Probability mark (%)
capture.017Marks are review notes, not provider observations. They reset when another wager is selected.
capture.019No verified alert-to-wager timing link.
capture.020Alert at zero; Internet ticket at {v0} seconds.
capture.021Internet ticket
capture.022Zero is the alert. Negative means the Internet ticket arrived first. Absolute wager timestamp:
capture.025Comparison inputs present. Independent provenance and settlement review still required.
capture.026No edge, arbitrage or abuse score is calculated from incomplete evidence.
capture.028No matched exchange snapshots. Liquidity is unknown, not zero.
capture.029At wager
capture.030Now
capture.031Coverage unknown
capture.032{v0} of {v1} covered
capture.033{v0} {v1} stake coverage
capture.034No full-stake blended price available
capture.035Full-stake blended decimal price {v0}
capture.036Time and market eligible under supplied evidence.
capture.037Time or market ineligible.
capture.038Top level:
capture.039size unknown
capture.040{v0} quoted units
capture.041at
capture.042. Units
capture.043asserted as stake
capture.044unverified
capture.045Deeper level
capture.046unknown
capture.047units at
capture.048asserted additional
capture.049additional size unverified
capture.050Quoted 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.053Implied probability in percent, before removing margin. Two same-market snapshots; the connecting line does not reconstruct intervening moves. Opening price unavailable.
capture.054No eligible sharper-book snapshots on both sides of the wager. Opening price and intervening movements are unavailable.
capture.055Telegram comparison draft
capture.056HTML templates v1. Preview only; no destination or send action. No customer, chat or bot fields are included.
capture.057Draft format
capture.058Comparison review
capture.059Liquidity review
capture.062Synthetic $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.063Remove deeper capacity
capture.064Add $475 deeper capacity
capture.065Real wager comparisons
capture.067Private Fantasy402 spool and recorded 4C observations. Canonical identities, provider time units, depth and exact fee evidence must pass review before an estimate appears.
capture.068Venue fee references · checked October 10, 2026
capture.069Public 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.070Kalshi event-contract schedule
capture.071· market multipliers and rounding apply.
capture.072Polymarket protocol fees
capture.073· market parameters and product jurisdiction must match.
capture.074Novig fee schedule
capture.075· trade type, league, channel and fill VWAP matter.
capture.076Reading private sources…
capture.077Load real wagers
capture.078Operator unlock is available in Desk → Telegram.
capture.079distinct wagers ·
capture.080quote observations in the last two UTC day partitions · read
capture.081· showing the latest 100 wagers
capture.082Wager
capture.083Provider time text:
capture.084Reviewed identity: {v0}
capture.085Absolute time and market identity have not been reviewed.
capture.087expected profit after
capture.088assessed costs. Proportional two-sided sharp probability
capture.089Model 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.090Web access and IP references
capture.091Weblog summary observed
capture.093. These are account associations, not a verified wager session or wager-time IP.
capture.094No associated IP evidence available.
capture.095References use a keyed hash. A shared IP does not establish shared identity. No web-session link has been inferred.
capture.096No real wagers stored. Samples are not substituted.
capture.099Close capture
capture.101Time context only: the pictured market and quote are unverified. WebP thumbnail first; full size loads only on request.
comparison.captureWagerCapture before wager
comparison.captureNowLatest capture for wager
comparison.captureMissingNo capture within 20 minutes before this time. Later images cannot fill the gap.
comparison.captureContextWager {v0} · {v1} · capture {v2} seconds before comparison time.
capture.102Show thumbnail
capture.103Load full image
capture.104Archived {v0} board at {v1}
capture.105Capture unavailable. Close and reopen to retry.
capture.106Full image
capture.107Thumbnail
capture.108Loading private capture…
account.open-tipOpen profile
bet.at-closeAT BET {t} · AT CLOSE NOW
bet.fairFAIR {placed}% → {close}% · {source}
bet.grade-tipEV at bet {ev}% · CLV {clv}%
bet.legs{n}-LEG
bet.open-srOpen ticket placed at
bet.open-tipOpen ticket: book snapshot at bet and close
bet.takenTAKEN
bet.this-ticketTHIS TICKET
book.avg-gap-tipMean distance from this book's number to the sharp composite
book.book-lineBOOK {line}
book.composite-lineCOMPOSITE {line}
book.fair-cents{cents}¢ fair
book.lag-steps{n} STEP
book.leadsLEADS
book.moves-first-tipShare of market number changes this book printed on the same step
book.off-sharpOFF SHARP
book.open-tip{book} · open book
book.pt{n} pt
books.anyAny
books.bestBest odds by book
books.best-noteShow only the lines where a book has the best price.
books.booksBooks
books.kind-row{kind} books
books.kindsBook types
books.menuBooks that display
books.menu-titleBOOKS THAT DISPLAY
books.no-limitsThe feed has no posted limits yet, so there is no limit filter.
books.orderOrder the rows
books.resetReset
books.summaryBOOKS {shown}/{total}
brand.home, home
chart.activityACTIVITY
chart.books-moved{n} BOOKS MOVED
chart.cumulativeCUMULATIVE
chart.everyone-elseEVERYONE ELSE
chart.flow-labelWager volume timeline
chart.hourlyHOURLY HANDLE
chart.keyKEY {keys}
chart.line-historyLine history
chart.line-movesLINE MOVES
chart.minus-1h−1H
chart.minus-2h−2H
chart.sharp-accountsSHARP ACCOUNTS
chart.signal-tipSignal score
chart.wagers-labelWagers per period
common.addADD
common.allALL
common.backBACK
common.clearClear
common.closeCLOSE
common.columnsCOLUMNS
common.defaultDEFAULT
common.evenEVEN
common.lineLINE
common.mlML
common.noneNONE
common.nowNOW
common.offOFF
common.onON
common.openOPEN
common.refreshREFRESH
common.resetRESET
common.revertREVERT
devig.ev-kellyEV · ¼ KELLY
devig.hintEnter both sides of a two-way market
devig.methodDevig method
devig.not-priceNOT A PRICE
devig.on-sideON SIDE
devig.price-aSide A price
devig.price-bSide B price
devig.side-aA
devig.side-bB
devig.testTEST A PRICE
devig.test-hinte.g. +105, 2.05, 0.95, 49¢
devig.test-labelPrice to test
devig.vs-multVS MULTIPLICATIVE FAIR
docs.allAll docs
docs.lede-drawnwhen the app is built and drawn with the same tokens as every screen. Each one is proven by the gate.
docs.lede-parsedThese pages are the repo's own docs, parsed by
docs.missingNo doc named “{slug}”.
docs.tableTable
docs.task-donedone
docs.task-openopen
ds.account-foot24H 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-rulesALL RULES
ds.all-rules-subEvery flag on the replay tape. These counts are not published.
ds.best-price(best price)
ds.channel-acct-tip{n} wagers · {risk}
ds.consensus-footCONSENSUS = MEDIAN DEVIGGED (MULTIPLICATIVE) FAIR ACROSS BOOKS ON THE CURRENT NUMBER · {fair}%
ds.first-seenFIRST SEEN {date} · {days} DAYS
ds.flag-nn={n}
ds.flag-ruleRULE {rule} · {note}
ds.game-detailGame detail
ds.game-detail-openGAME DETAIL ↗
ds.game-detail-tipGame detail: every ticket and the line
ds.if-winsIF IT WINS BOOK {result}
ds.league-tabsLeague
ds.lifetime-tipSynthetic history plus today's settled tickets
ds.market-tabsMarket
ds.match-many{field} · {accounts} SHARE AN IP
ds.match-one{field} · {accounts} SHARES AN IP
ds.open-wallOPEN ON WALL ↗
ds.open-wall-tipClose the screen and open this line on the wall
ds.positions-totals{handle} OPEN HANDLE · {worst} SUM OF WORST CASES
ds.profilePROFILE ↗
ds.replay-self-tipAccounts on this replay tape whose customer equals the agent. This is separate from the published self-bet count.
ds.reset-defaultsRESET DEFAULTS
ds.reset-panesRESET PANES
ds.reset-panes-tipReset the data screen's pane sizes
ds.route-feedPost to the wall's alert feed
ds.route-telegramSend through Telegram (THRESHOLDS purpose; preview until live)
ds.searchSearch the data screen
ds.search-hintSearch every tab: account, agent, team, ROT, league, IP, ticket…
ds.security-rulesWHOLE 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-groupSegment
ds.side-totals{tickets} TKT · {handle} HANDLE · {liability} LIABILITY
ds.stale(stale)
ds.tab-highhigh
ds.th.chase-rateCHASE rate
ds.th.chase-windowCHASE window
ds.th.cobet-timesCO-BET times
ds.th.cobet-windowCO-BET window
ds.th.follow-minFOLLOW min
ds.th.follow-rateFOLLOW rate
ds.th.follow-windowFOLLOW window
ds.th.heavy-floorMin handle for shares
ds.th.heavy-minWindow
ds.th.heavy-pctOne-side share
ds.th.heavy-usdHandle on one side
ds.th.imbalanceWorst-case loss
ds.th.leader-betsLEADER min bets
ds.th.leader-moveLEADER move
ds.th.leader-rateLEADER rate
ds.th.leader-windowLEADER window
ds.th.off-centsPrice vs consensus
ds.th.off-cents-tipDevigged fair distance from the median book
ds.th.off-mlMoneyline off
ds.th.off-ptsSpread/total line off
ds.th.px-imbalanceExchange imbalance
ds.th.px-imbalance-tipabs(THIS SIDE − OTHER SIDE) / (THIS SIDE + OTHER SIDE) on an exchange. THIS SIDE is the tracked side.
ds.th.sharp-shareSharp share of side
ds.th.steam-accountsSTEAM accounts
ds.th.steam-booksSTEAM books
ds.th.steam-windowSTEAM window
ds.ticket-snapshotTICKET SNAPSHOT ↗
ds.tracking-tipTracking {side}{total}
ds.trend-tipTrend {trend}
event.away-fromaway from
event.chartLine history with wagers
event.counts{rated} rated · {graded} graded · {sharp} from sharp accounts
event.dot-labelTicket #{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-tipMean placement grade of every ticket on this event
event.line-moveLINE MOVE
event.liveLIVE · {status} · {away}–{home}
event.share-tip{pct}% of {market} handle
event.sharp-short{pct} SH
event.show-allSHOW ALL
event.tickets-allALL TICKETS · {n}
event.tickets-hint· CLICK A TICKET FOR THE BOOK SNAPSHOT
event.tickets-sideTICKETS ON THIS SIDE · {shown} OF {total}
event.timing-noteTIMING = WHEN EACH LEG LANDED AGAINST THIS MARKET'S LINE MOVES · RE-RATED EVERY TICK
event.towardtoward
event.wagers-on, wagers on {label}
feed.4c-tipReplaying the recorded 4C board snapshot. The 4C line is not joined to the tape.
feed.desk-tipReplay clock started {clock}
feed.f402-tipReplaying the recorded Fantasy402 ticket tape
feed.sidecar-clockBun sidecar replay clock
feed.sidecar-lastLast sidecar event: {op}
feed.statusFeed status
filter.accountsAccounts
filter.any-gradeANY GRADE
filter.any-ipANY IP
filter.any-riskANY RISK
filter.any-sourceANY SOURCE
filter.any-timingANY TIMING
filter.any-typeANY TYPE
filter.bet-typeBet type
filter.clearClear filters
filter.gradeGrade or better
filter.grade-aGRADE A
filter.groupWager filters
filter.ip-typeIP type
filter.min-riskMinimum risk
filter.or-better{g} OR BETTER
filter.searchSearch wagers
filter.search-hintAccount, agent, IP, ticket
filter.sourceSource
filter.timingLine-move timing
focus.book{wagers} on the published book. Ticket rows are not on this feed.
focus.book-waitingThe published book is not on the feed yet. Ticket rows are not on this feed.
focus.duplicate-noteEach 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-noteWeblog rows are a separate feed, so this page publishes no join count.
focus.money-noteThe header wager total is the published book.
focus.place-noteHosting pins are a separate feed, so this page publishes no place count.
focus.volume-noteVolumeAmount stays on each spool row. This page publishes no volume count.
games.balancedBALANCED
games.expand-hintCLICK, ENTER OR SPACE EXPANDS · ESC COLLAPSES
games.fair-ours-tipFair adjusted onto our number
games.first-betFIRST BET
games.flatFLAT
games.insideINSIDE
games.needNEED {side}
games.open-ticket-tipOpen ticket
games.shared-withSHARED WITH {accounts}
games.signal-tipSignal {signal}
games.volume-tip{handle} side handle · {tickets} tickets
globe.networkBetting network globe
globe.pinsHosting pins: {pins}
grade.tipPlacement grade {grade}: EV against the devigged fair price when the wager was placed
health.api-captionEndpoint paths, request headers and shapes, expected responses, and recorded status
health.api-noteExpected contracts and dated observations. These rows do not poll the APIs; current feed health is in Server checks.
health.autoAUTO 15S {on}
health.check-nowCHECK NOW
health.checkingCHECKING…
health.days{n} DAYS
health.definitions({n} definitions)
health.dictionary-noteField meanings, types, units and validation from the checked-in clients. These definitions contain no private payload values. Unverified provider behavior is labeled.
health.expectedExpected: {status}
health.field-defs{name} field definitions
health.log-regionStatus log
health.no-job-deadlineNo job deadline
health.not-probedNOT PROBED
health.observedOBSERVED
health.resource-retryRefresh measurements
health.resource-lockedLOCKED
health.resource-unavailableUNAVAILABLE
health.job-budget-noteDesk 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.pathPath:
health.request-headersRequest headers ({n})
health.seeSee {page}
health.sourceSource:
health.previous-reportPrevious 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.agentAgent
ip.customerCustomer
ip.datacenterDC
ip.endEnd
ip.end-dateEnd date
ip.extractScheduled extract
ip.overrideIP override
ip.override-defaultdefaults to customer
ip.override-requiredrequired
ip.refresh-tokenRefresh token
ip.refreshingRefreshing…
ip.reportReport
ip.report-typeReport type
ip.residentialRES
ip.searchSearch
ip.search-formWeb log search
ip.searchingSearching…
ip.shared-tip{n} accounts on this IP
ip.startStart
ip.start-dateStart date
ip.tip{ip} · {kind} · {city} · risk {risk}
ip.tokenBearer token
ip.token-noteRefreshes 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-placeholdereyJ… from the manager session
ips.accts{n} ACCTS
ips.noteAddresses are RFC 5737 documentation ranges. Shared means more than one account placed from the IP in the 24H tape.
keys.wordsWORDS
keys.words-noteOne label, one color, one use. The same word means the same thing on every screen.
kit.active-sortActive sort
kit.ascA–Z / low to high
kit.asc-tipAscending, click for descending
kit.average-tipAverage {label}
kit.click-sort{title}Click to sort {order} · shift-click adds a secondary sort
kit.collapse-allCollapse all groups
kit.collapse-rowCollapse {label} row
kit.columns-menuShow or hide {label} columns
kit.columns-tip{label} columns
kit.controls{label} controls
kit.descZ–A / high to low
kit.desc-tipDescending, click for ascending
kit.detail{label} detail
kit.detailsDetails
kit.expand-allExpand all groups
kit.expand-rowExpand {label} row
kit.fitFIT
kit.fit-noteFIT · drop custom widths so flexible columns use the spare room
kit.fit-tipFit {label} columns to the spare width
kit.groupGROUP
kit.group-tipGroup {label} by
kit.order-gradebest / worst
kit.order-numberhigh / low
kit.order-textA–Z / Z–A
kit.order-timenewest / oldest
kit.remove-sortRemove this sort key
kit.reset-noteRESET · sort, grouping, columns and widths back to default
kit.reset-tipReset {label} sort, grouping, columns and widths
kit.resize-noteDrag to resize · double-click to fit or reset · arrows when focused
kit.resize-tipResize {label} column
kit.sortSORT
kit.sort-shiftSort {label} · shift-click adds a secondary sort
kit.sort-tipSort {label}
kit.sum-tipSum of {label}
kit.swipe-cueSwipe 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-wagerWAGER · SIZE = RISK
lanes.legend-weblogWEBLOG
lanes.legend-windowBET WINDOW BEFORE MOVE
log.errorERROR
log.infoINFO
log.warn-upWARN+
nav.primaryPrimary
overview.desk-key, desk key
overview.full-pageFull {page}
overview.open-pageOpen the {page}
overview.shortcutsShortcuts and words
patterns.noteBehavioral correlations from the replay book — same agent, same game, more than one account. No weblog or IP matching.
profile.24h24H
profile.confidenceCONFIDENCE n/(n+{half}) · NEW ACCOUNTS START AT {prior}
profile.ipsIPS · 24H
profile.lifeLIFE*
profile.life-noteROI 24H / ROI LIFE* · CLV 24H / CLV LIFE* · *LIFETIME IS SYNTHETIC HISTORY SEEDED PER ACCOUNT, PLUS TODAY · OPEN EXPOSURE {exposure}
profile.life-tipSynthetic seeded history plus today's settled tickets
profile.rating-tipSharp score, shrunk toward the synthetic lifetime rating
profile.srprofile
rating.tipRating: half line-move timing, 30% placement grade, 20% CLV
review.all-24hALL 24H
review.all-accountsALL ACCOUNTS
review.all-sharpsALL SHARPS
common.avg-grade-tipAverage placement grade {grade}
review.demoteDEMOTE
review.demote-tipForce not sharp everywhere on the desk
review.drill-hint{head} · CLICK FOR THE BOOK SNAPSHOT
review.forced-not-sharpFORCED NOT SHARP
review.forced-sharpFORCED SHARP
review.life-noteLIFE* = SYNTHETIC SEEDED HISTORY + TODAY · CLICK A TICKET, ACCOUNT OR GAME TO DRILL IN
review.manualMANUAL
review.manual-tipManual {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-noteNO NOTE
review.note-labelOverride note for {customer}
review.note-placeholderOptional note
review.open-at-risk{tickets} · {risk} AT RISK
review.perf-scopePerformance scope
review.perf-windowPerformance window
review.promotePROMOTE
review.promote-tipForce SHARP everywhere on the desk
review.recent-settledNO OPEN TICKETS · RECENT SETTLED
review.reset-tipBack to the score
review.roster-scopeRoster scope
review.sharp-accountSharp account
review.sharpsSHARPS
review.sides-risk{sides} · {risk} SHARP RISK
review.snapshot-tipBook snapshot at bet and close
review.ticket-scopeTicket scope
security.feed-publishedPublished security feed
security.feed-waitingWaiting on the next ticker publish
security.late-viewThe late view keeps every twin in the window, so one alert can appear on more than one view row.
security.screen-linkShared IPs and account access
security.self-bet-ledeThe 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-ledeEach 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.staleSTALE {by}
snap.stale-tipLine trails the sharp market
tag.sharpSHARP
tag.steamSTEAM
telegram.ackACK
telegram.all-customersall customers
telegram.allowed-chats{n} allowed chats on the server
telegram.approveAPPROVE
telegram.autoAUTO
telegram.card-openCARD OPEN
telegram.chatChat
telegram.chat-idChat id
telegram.chat-id-placeholderChat id · −100… or @channel
telegram.chat-pickChat…
telegram.checkingCHECKING
telegram.clear-tagCLEAR
telegram.dest-nameDestination name
telegram.dest-newNew destination name
telegram.dest-new-placeholderName · e.g. Turn-ins group
telegram.dest-removeRemove destination
telegram.escESC
telegram.escalate-tipEscalate to owners
telegram.inviteINVITE {role}
telegram.invite-agentsAgent codes for the invite
telegram.invite-agents-placeholderAgent codes for an agent invite · e.g. HARBOR, ATLAS
telegram.invite-copy-tipClick to copy; send it to one person
telegram.kind-topics{kind} · topics
telegram.lift-allLIFT ALL
telegram.live-needs-tokenNeeds a bot token on the server
telegram.live-needs-unlockNeeds an operator unlock
telegram.live-sendLIVE SEND
telegram.live-tipSend for real
telegram.lockOPERATOR · LOCK
telegram.lock-tipEnd the operator session
telegram.min-severityMinimum severity
telegram.mute-gameGAME {game}
telegram.mute-until{target} · UNTIL {until}
telegram.no-adminSET DESK_ADMIN_TOKEN TO SEND
telegram.no-destinationNO DESTINATION
telegram.not-sentNOT SENT
telegram.operator-tokenOperator token
telegram.ownerOWNER
telegram.person-removeRemove {name}
telegram.quiet-toTO
telegram.registry-helpIn 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-noteShared with Telegram and the CLI · chat and person ids are masked
telegram.retryRETRY
telegram.routeROUTE
telegram.route-removeRemove route {name}
telegram.rule-healthHEALTH CHANGES
telegram.rule-highHIGH-SEVERITY ALERTS
telegram.rule-quietQUIET HOURS · ALERTS HELD
telegram.rules-localTHIS BROWSER
telegram.rules-lockedUnlock the operator with a sidecar connected to edit the bot's rules
telegram.rules-saveSAVE TO SIDECAR
telegram.rules-sidecarSIDECAR RULES
telegram.rules-syncedThe sidecar bot sends with these rules
telegram.rules-unsaved{n} unsaved: {keys}
telegram.setup-hintSet TELEGRAM_BOT_TOKEN and TELEGRAM_ALLOWED_CHATS to send
telegram.sev-anyAny severity
telegram.sev-highHigh and up
telegram.sev-watchWatch and up
telegram.sidecar-hintThe sidecar bot sends; this page edits its people, routes and rules
telegram.testTEST
telegram.topictopic {thread}
telegram.topic-idTopic id
telegram.topic-id-placeholderTopic id (optional)
telegram.tpl-alertALERT TEMPLATE
telegram.tpl-turninTURN-IN TEMPLATE
telegram.unlockUNLOCK
telegram.whole-chatwhole chat
theme.switchTheme: {now}. Switch to {next}
theme.switch-keyTheme: {now}. {key} switches to {next}
ticker.gradesLive wager grades
timeline.foot{n} ON THIS LINE · {off} OFF THE NUMBER · SAME MARKET ONLY
timing.alertAlert wager
timing.at-least{s}s or more
timing.at-most{s}s or less
timing.internetInternet wager
timing.keyAlert wager, then the Internet wager. Whole seconds.
timing.seconds{s}s
timing.underunder {s}s
unit.ms{n} ms
wall.alerts-count{high} HIGH · {shown}/{total} · 24H
wall.alerts-searchSearch alerts
wall.all-booksALL BOOKS
wall.all-marketsALL MARKETS
wall.at-batAt bat
wall.collapse-leftCollapse live board
wall.collapse-rightCollapse signals
wall.devig-tipDevig calculator ({key})
wall.flowHANDLE · 24H
wall.flow-subHOURLY HANDLE · ALL SOURCES · 24H
wall.game-openOpen {away} at {home},
wall.globeGLOBE
wall.globe-hintDRAG TO ROTATE · CLICK A HUB TO FOCUS
wall.globe-subGLOBAL BETTING NETWORK · SHARP MONEY FLOW
wall.graded{n} graded
wall.hide-globeHIDE GLOBE
wall.incomingINCOMING · LAST {window}
wall.keysKeyboard shortcuts
wall.keys-tipKeyboard shortcuts ({key})
wall.largestLARGEST {risk} · {account}
wall.mover-books{n} BOOKS
wall.mover-firstFIRST
wall.movers-kindsBook class of the first book to move
wall.movers-placeholderSearch movers
wall.movers-searchSearch line movers
wall.movers-shown{n} SHOWN · NOISE {noise}
wall.namesNAMES
wall.names-longLONG
wall.names-shortSHORT
wall.names-tipTeam names ({key})
wall.oddsODDS
wall.odds-screenODDS SCREEN
wall.odds-tipOdds format: {format} ({key})
wall.off-cents{n}¢ OFF
wall.off-number-tipTicket number differs from the line that was up
wall.off-points{n} OFF
wall.open-historyOpen line history
wall.open-history-movedOpen line history, moved
wall.patterns-subCORRELATED ACCOUNTS · SAME AGENT · SAME GAME
wall.possessionPossession
wall.ratedRATED
wall.rated-afterafter
wall.ratings-tipWager timing ratings as they arrive and change with the line
wall.reset-panesReset panel layout
wall.reset-panes-tipReset the wall's panel sizes (drag the splitters between panels to resize)
wall.reviewREVIEW
wall.review-tipOpen Sharp Review ({key})
wall.searchSearch teams, abbreviations or rotation numbers
wall.search-placeholderTeam, abbr or rotation
wall.sharp-line{agent} · {tickets} · {risk} risk
wall.telegram-tipTelegram notifications and turn-ins ({key})
wall.tour-autoAUTO TOUR
wall.tour-pausedTOUR PAUSED
wall.tracked{n} TRACKED · {where}
wall.tracked-gameTracked game
wall.viewView
wall.wager-viewWager view
wall.window-tipWager window ({key})
wall.patterns-tabPATTERNS
tip.rot-4cRotation is the join to the 4C board and the ticker
tip.since-openSince open
tip.line-changesLine changes in the kept history
tip.open-ticketsOpen straight tickets on this line
tip.rot-tickerRotation is the join to the ticker
tip.openerOpening line on each side; for a moneyline, the opening price with the other side at a standard hold
tip.best-priceBest fresh price on each side at the shown books, and how many more books match it
tip.avg-priceAverage fresh price on each side at the shown books
tip.holdMarket hold taking each side at its best shown book; negative means a two-way arbitrage
tip.accounts-eitherDistinct accounts on either side
tip.off-marketBooks off the consensus at the current thresholds
tip.timingBet timing vs line moves
tip.open-exposureBook pays this if every open ticket wins
tip.settled-plBettor P/L on settled tickets
tip.synthetic-lifeSynthetic lifetime + today
tip.clv-trendLast 12 graded straights, or weekly lifetime ROI when fewer than 3
tip.worst-caseBook's result if the heavier-liability side wins
tip.flag-accountsAccounts named on this flag
tip.flag-ipShared address on a SHAREDIP flag. The wager ip lives in desk/v1/wagers/.
tip.signal0.00–1.00 from the move off the open
tip.volumeHandle and tickets on this side of the game and market. Not the 24H board handle.
tip.positionLiability each side, net exposure, and the side the book needs
tip.graded-todayGraded straights today
tip.beat-closeBeat-close rate on today's graded straights
tip.beforeShare of rated wagers placed ahead of or during a move their way
tip.afterShare of rated wagers placed after the move (chasing or buying back)
tip.timing-mixBEFORE+DURING · STABLE · AFTER · AGAINST
tip.open-riskOpen risk
tip.of-sideSharp risk as a share of the side's open handle
tip.move-since-sharpsRisk-weighted net line move toward the side since the sharp wagers
tip.line-nowCurrent line on their side
tip.move-since-wagerNet line move toward them since the wager
tip.rankRank by settled P/L, then CLV
tip.settled-riskSettled risk
tip.clv-windowRisk-weighted CLV on graded straights in the window
tip.today-blendBlend from today's tape before shrinkage
tip.life-ratingLifetime rating the day is shrunk toward
tip.confidenceWeight on today's tape: n/(n+{half})
tip.vs-cutScore minus the {cut} cut
ds.recent-handle{min}M HANDLE
graph.label4C 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.line4C LINE
graph.windowBET WINDOW {m}M
graph.off-numberOFF THE NUMBER
graph.on-numberON THE NUMBER
graph.in-windowINSIDE THE BET WINDOW
graph.hintSelect 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-printON THE PRINT
graph.before{gap} BEFORE
graph.untilUNTIL {t}
graph.slot{tickets} IN THE SLOT
graph.no-logoutNO LOGOUT ROW
graph.login-logout-fromLOGIN AND LOGOUT FROM #{id}
graph.login-fromLOGIN FROM #{login} · LOGOUT FROM #{logout}
graph.sets-bothSETS {login} AND {logout}
graph.setsSETS {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-shortIN WINDOW
health.stage-tapeTAPE
health.stage-tape-what{n} streams buffered in the sidecar
health.stage-flushFLUSH
health.stage-compactCOMPACT
health.stage-targetTARGET
health.stage-missingmissing {streams}
health.stage-retentionRETENTION
health.sweep-r2R2 lifecycle rule per stream
health.sweep-localsweep deletes expired local days
telegram.rule-resultsFINALS · ALERTS AND SHARPS GRADED
health.score-titleSCORE PROOF
health.score-missingNo score object yet. The sidecar writes it on flush.
health.score-lineSteam {steam} · moves {moves} · sharps {sharps} · beat close {beat} · book {book}
ip-investigation.ip-investigation-480abd7cIP investigation
ip-investigation.account-connections-be28fdc2ACCOUNT CONNECTIONS
ip-investigation.find-shared-addresses-and-7bcc0d88Find shared addresses and follow the accounts connecting them.
ip-investigation.scheduled-fantasy402-extract-50e7abe4Scheduled Fantasy402 extract
ip-investigation.loading-the-latest-extract-8522050eLoading the latest extract…
ip-investigation.no-scheduled-extract-is-fd2ddd5cNo scheduled extract is available. Use detailed log search below to inspect activity.
ip-investigation.extracted-00a65967Extracted
ip-investigation.pass-dbf10ed2pass ·
ip-investigation.rows-in-this-pass-d062bd74rows in this pass
ip-investigation.extract-warning-9a3ba208Extract warning:
ip-investigation.the-saved-groups-may-bef0f6e0. The saved groups may be incomplete.
ip-investigation.shared-addresses-83f4dd1bShared addresses
ip-investigation.two-or-more-customer-18467ae3Two or more customer IDs
ip-investigation.distinct-customers-ccca29a8Distinct customers
ip-investigation.across-shared-addresses-448e13b6Across shared addresses
ip-investigation.recurring-customers-4f3545a3Recurring customers
ip-investigation.seen-on-multiple-addresses-89c25ca2Seen on multiple addresses
ip-investigation.largest-group-172d8bb5Largest group
ip-investigation.customer-ids-on-one-5f3401dbCustomer IDs on one address
ip-investigation.find-an-ip-customer-7960b8b8Find an IP, customer or login
ip-investigation.ip-name-or-customer-ab3f109aIP, name or =customer for an exact match
ip-investigation.group-size-f501715bGroup size
ip-investigation.2-customers-cad0e87c2+ customers
ip-investigation.3-customers-ae87ecf33+ customers
ip-investigation.5-customers-f4a697895+ customers
ip-investigation.10-customers-4afe756910+ customers
ip-investigation.largest-shared-groups-7543a487Largest shared groups
ip-investigation.customer-ids-per-address-4d04534dCustomer IDs per address · top eight matching groups
ip-investigation.select-an-address-in-016ceb46Select an address in the list to inspect its connections.
ip-investigation.no-shared-addresses-match-ffe0ae15No shared addresses match these filters.
ip-investigation.selected-ip-details-e69e6066Selected IP details
ip-investigation.address-details-74d6af33Address details
ip-investigation.customers-21eb2153customers
ip-investigation.recur-on-other-addresses-298ef59frecur on other addresses
ip-investigation.customer-ids-57a99ba0Customer IDs
ip-investigation.find-addresses-matching-value1-189a31a9Find addresses matching {value1}
ip-investigation.sampled-login-names-9583cbb8Sampled login names
ip-investigation.not-recorded-b37c7879Not recorded
ip-investigation.the-extract-keeps-at-2ecc3aeeThe 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-65db4b85Other addresses with the same customers
ip-investigation.shared-c6bc6c86shared ·
ip-investigation.more-connections-select-a-700022d8more connections. Select a customer to narrow the list.
ip-investigation.no-other-address-shares-b3c2ff7eNo other address shares these customer IDs in this extract.
ip-investigation.select-an-address-from-349995f3Select an address from the list.
ip-investigation.shared-ip-directory-9397c2d0Shared-IP directory
ip-investigation.matching-addresses-ranked-by-735ba990matching addresses · ranked by customer count, then recurring customers
ip-investigation.shared-addresses-ranked-by-cf664846Shared addresses ranked by number of customer IDs
ip-investigation.address-56ef8f20Address
ip-investigation.customers-aabe76f1Customers
ip-investigation.across-addresses-55425fb7Across addresses
ip-investigation.customer-preview-1c65acbbCustomer preview
ip-investigation.value1-recurring-8810bfac{value1} recurring
ip-investigation.no-overlap-2ae0561fNo overlap
ip-investigation.value1-more-a5ce39f0+{value1} more
ip-investigation.no-matches-try-a-c4a62d70No matches. Try a shorter search or a smaller group size.
ip-investigation.address-pages-f1e6f586Address pages
ip-investigation.previous-a57b08a4Previous
ip-investigation.page-0a30a815Page
ip-investigation.of-28391d3bof
ip-investigation.next-1ff57a29Next
ip-investigation.shared-addresses-can-reflect-3c13906bShared 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-1f585ac9Detailed activity
ip-activity.returned-activity-by-report-a66e6395Returned activity by report day
ip-activity.central-time-log-records-c7d73b18Central time · log records, not login sessions or wagers. Dates absent from the response are not shown as zero.
ip-activity.no-usable-timestamps-were-e732f2f1No usable timestamps were returned.
ip-activity.records-have-no-usable-3caa5813records have no usable timestamp and are excluded from the chart.
bun-tooling.developer-tooling-bun-aeabc35fDEVELOPER TOOLING · BUN
bun-tooling.bun-adoption-checks-2397d7f3Bun adoption & checks
bun-tooling.repository-review-dated-cf383173Repository 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-dc943775Find a feature or source file
bun-tooling.adoption-9b331283Adoption
bun-tooling.all-features-808ce052All features
bun-tooling.features-eda614f2features ·
bun-tooling.copy-command-for-value1-7af9cab6Copy command for {value1}
bun-tooling.copy-command-9a01feecCopy command
bun-tooling.source-verification-77c28addSource & verification
bun-tooling.official-release-reference-944f954dOfficial release reference ↗
bun-tooling.no-features-match-clear-8541fe03No features match. Clear the search or choose All features.
bun-tooling.review-base-revision-7fe451d4Review 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-370aaaeeNo verification evidence recorded for this revision yet.
repo-check-feed.repository-checks-proofs-933b131bRepository checks & proofs
repo-check-feed.refresh-checks-0fd0bae1Refresh checks
repo-check-feed.show-actual-feed-85c97cb2Show actual feed
repo-check-feed.preview-sample-states-e1005e00Preview sample states
repo-check-feed.registered-checkouts-change-fingerprint-5a1f902fRegistered 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-1cf919b1Checks use local checkout contents. They do not fetch remote branches, deploy changes, or prove visual quality.
repo-check-feed.sample-preview-these-are-c0843b0fSample preview — these are not repository results.
repo-check-feed.loading-repository-checks-dd64ae02Loading repository checks…
repo-check-feed.operator-access-3e5dead0Operator access
repo-check-feed.sample-data-d04815cdSample data
repo-check-feed.last-poll-value1-ct-42717024Last poll {value1} CT
repo-check-feed.no-poll-recorded-71420a5dNo poll recorded
repo-check-feed.stale-watcher-may-be-d262531a· Stale: watcher may be stopped
repo-check-feed.repositories-7d690481repositories ·
repo-check-feed.needs-266d1c70needs
repo-check-feed.need-be8dff00need
repo-check-feed.attention-e0787d27attention
repo-check-feed.filter-repository-checks-a6877eccFilter repository checks
repo-check-feed.all-states-f1894114All states
repo-check-feed.lifecycle-3ec6c962Lifecycle:
repo-check-feed.review-d686a57dReview:
repo-check-feed.reviewed-fad6057bReviewed
repo-check-feed.unreviewed-f5265a26Unreviewed
repo-check-feed.revision-2e516d68Revision
repo-check-feed.uncommitted-changes-included-829a8879· Uncommitted changes included
repo-check-feed.passed-436fe71bPassed
repo-check-feed.failed-031a8f0fFailed
repo-check-feed.commit-proof-34a89f4dCommit proof
repo-check-feed.gate-passed-a21ca1b1Gate passed
repo-check-feed.gate-failed-732827e5Gate failed
repo-check-feed.captured-8a03fa9aCaptured
repo-check-feed.ct-bun-7c4e0454CT · Bun
repo-check-feed.bun-tests-70f1ecfdBun tests ·
repo-check-feed.node-tests-361d5dd8Node tests ·
repo-check-feed.image-proofs-da7b268dimage proofs
repo-check-feed.this-proof-covers-the-d24e2e5dThis proof covers the committed revision only.
repo-check-feed.proof-rejected-invalid-or-c33a1a74Proof rejected: invalid or inconsistent record.
repo-check-feed.view-verification-00a36f40View verification
repo-check-feed.for-10c22bcffor
repo-check-feed.no-repositories-in-this-1768cb0eNo repositories in this state.
repo-check-feed.verification-record-5bef36c5Verification record ·
repo-check-feed.contract-results-recorded-180b8a4bcontract results recorded
repo-check-feed.contract-verification-for-value1-a562e220Contract verification for {value1}
repo-check-feed.this-legacy-proof-has-ca79daceThis 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-dc3e3e26Each 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-828be975Repository activity
repo-check-feed.failure-recovery-and-proof-5dcabb33Failure, 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-c1ebc781Needs attention
repo-check-feed.proof-record-updated-7bd4aee3Proof record updated
repo-check-feed.recovered-37ce0a91Recovered
repo-check-feed.ct-f9cd8d7eCT ·
repo-check-feed.no-repository-events-recorded-bef86673No repository events recorded.
workbench.sample-agent-6aeefe88Sample agent
workbench.sample-player-294b7d04Sample player
workbench.second-sample-242af83dSecond sample
workbench.name-dcd1d522Name
workbench.kind-f5387f9bKind
workbench.sample-value-1a5d15feSample value
workbench.workspace-tooling-f8c2a520WORKSPACE TOOLING
workbench.styles-themes-checks-5f0322c1Styles, themes & checks
workbench.build-on-the-shared-cbcf711bBuild on the shared Desk components. Try sample controls and inspect the private repository check feed.
workbench.back-to-workspace-0f0c0c6eBack to workspace
workbench.theme-preview-d04517ddTheme preview
workbench.preview-theme-8bc94986Preview theme
workbench.dark-60acc53fDark
workbench.light-dbcd5e7bLight
workbench.this-preview-is-scoped-a5c9fa65This preview is scoped to Workbench. The palette comes from the shared stylesheet.
workbench.controls-states-627aac04Controls & states
workbench.default-button-2569c6dbDefault button
workbench.disabled-button-a66924d7Disabled button
workbench.confirmed-fe00b67bConfirmed
workbench.needs-review-07297fa9Needs review
workbench.sample-95a2f1edSample
workbench.sample-name-9b854772Sample name
workbench.type-to-check-focus-e4d49f52Type to check focus and contrast
workbench.sample-type-1e3f2e3fSample type
workbench.player-64aee8c6Player
workbench.empty-state-no-records-54a893a2Empty state: no records yet. Unknown is not zero.
workbench.table-harness-769c7519Table harness
workbench.try-sorting-grouping-columns-35d04b91Try sorting, grouping, columns and reset. Saved layout belongs only to this sample table.
workbench.tool-contract-harness-e7e95eb2Tool contract harness
workbench.exercise-input-validation-locally-6f696b65Exercise input validation locally. This does not register browser tools or call a service.
workbench.run-sample-tool-checks-0175a605Run sample tool checks
workbench.theme-and-page-guide-edcee948Theme and page guide
workbench.one-shared-palette-one-d6dd6d10One 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-e0f52ecbThe separate BookDeskOps workspace Site has its own assets. Theme synchronization and the published Site version have not been verified here.
workbench.project-checks-add4a2f3Project checks
workbench.reference-commands-for-development-04c423dfReference 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-f7adf54cTiming review
security-timing-panel.measured-snapshot-examples-not-f5b02972Measured snapshot examples · not a live security feed. Filter the examples or rank the largest gaps first.
security-timing-panel.pairs-by-timing-window-91c7d698Pairs by timing window
security-timing-panel.counts-cover-only-the-1b3eee02Counts cover only the
security-timing-panel.measured-examples-they-do-da243b01measured examples. They do not describe the current wager tape.
security-timing-panel.find-alert-ticket-53c52e4bFind alert ticket
security-timing-panel.wager-number-0aa0ef3bWager number
security-timing-panel.timing-window-5db5cb8fTiming window
security-timing-panel.all-windows-a5a6160cAll windows
security-timing-panel.order-6be09082Order
security-timing-panel.largest-gap-first-a7c33809Largest gap first
security-timing-panel.ticket-number-ef4169ffTicket number
security-timing-panel.matching-measured-pairs-71581b09matching measured pairs
security-timing-panel.signed-gap-a-negative-f7e4ff3aSigned gap: a negative value means the Internet ticket came first.
security-timing-panel.alert-44a57b22Alert
security-timing-panel.gap-cb129306Gap
security-timing-panel.s-043a7187s
security-timing-panel.no-measured-pairs-match-4a3cdc69No measured pairs match. Try another ticket or timing window.
security-timing-panel.hide-alert-evidence-ef3d3eeeHide alert evidence
security-timing-panel.show-alert-evidence-2e0cb3a3Show alert evidence
security-timing-panel.alert-to-inspect-905c3336Alert to inspect
security-timing-panel.the-inspector-selects-from-adcdf817The inspector selects from the complete measured sample; table filters do not change its selection.
directory-connections.bot-registry-a6215c1bBot registry ·
directory-connections.bots-10b8ecc0bots
directory-connections.maintain-separate-bot-identities-830e2786Maintain 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-55564bb9Bot display name
directory-connections.bot-username-897e55bcBot username
directory-connections.your-bot-02d93ff9@your_bot
directory-connections.bot-purpose-db2019afBot purpose
directory-connections.bot-key-reference-1fd471a4Bot key reference
directory-connections.no-key-reference-6e35ab23No key reference
directory-connections.save-bot-revision-dd019e74Save bot revision
directory-connections.register-bot-ebc5dbecRegister bot
directory-connections.cancel-bot-edit-5db11428Cancel bot edit
directory-connections.manage-encrypted-bot-keys-0a7f4ed1Manage 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-ca81196fUsername observed on the existing sidecar
directory-connections.registry-only-not-verified-7e8a0e97Registry only · not verified on the sidecar
directory-connections.key-reference-beb3ff61Key reference:
directory-connections.none-140bedbfnone
directory-connections.edit-bot-c0cd1fd0Edit bot
directory-connections.no-bots-registered-here-c641728dNo bots registered here yet. Add your existing bot or a planned bot above.
directory-connections.retained-bot-registry-revisions-1fee2b69retained bot registry revisions. Telegram roles stay in the sidecar registry.
directory-connections.agreements-balances-wager-evidence-680d069dAgreements, balances & wager evidence
directory-connections.use-provider-account-matches-9b4b3431Use 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-14ae1286confirmed agreements ·
directory-connections.draft-agreements-77970bc3draft agreements ·
directory-connections.latest-confirmed-balance-observations-bc8ad426latest confirmed balance observations
directory-connections.accounting-settings-were-not-e557e7cbAccounting settings were not available at this read. Unknown balances are not zero.
directory-connections.manage-account-profiles-agreements-194604bbManage account profiles, agreements & balances
directory-connections.review-wager-evidence-in-3861e0d2Review wager evidence in Desk
operator-vault-option.always-also-save-my-c7dab491Always also save my verified operator token encrypted
operator-vault-option.applies-to-future-unlocks-9faa735dApplies to future unlocks in this browser.
operator-vault-option.environment-keys-02aee82aEnvironment & keys
operator-vault-option.stores-the-copy-your-2c05094cstores the copy; your HttpOnly session keeps Desk access unlocked for up to 12 hours.
workspace-sessions-panel.workspace-sessions-6a791c2dWorkspace sessions
workspace-sessions-panel.operator-access-for-this-e42cb09aOperator 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-9f7ea773Workspace:
workspace-sessions-panel.refresh-sessions-8bbcdf8bRefresh sessions
workspace-sessions-panel.this-browser-101f4d95This browser
workspace-sessions-panel.created-c116a61e· Created
workspace-sessions-panel.ct-expires-9066403cCT · Expires
workspace-sessions-panel.ct-15cbe5f0CT
workspace-sessions-panel.session-6959b415Session
workspace-sessions-panel.end-this-session-f7119cdfEnd this session
workspace-sessions-panel.revoke-session-8130308bRevoke session
workspace-sessions-panel.checking-workspace-sessions-449637b9Checking workspace sessions…
workspace-vault-page.lock-vault-441f34d1Lock vault
workspace-vault-page.private-workspace-805bb405PRIVATE WORKSPACE
workspace-vault-page.one-place-for-project-e53fe82aOne place for project variables, API keys, and passwords.
workspace-vault-page.operator-unlocked-732ecd4aOperator unlocked
workspace-vault-page.vault-locked-22a8f981Vault locked
workspace-vault-page.encrypted-storage-explicit-access-ed84bf40Encrypted storage · explicit access
workspace-vault-page.values-stay-on-the-96bb1c5cValues 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-4b9c3f97Unlock private credentials
workspace-vault-page.unlock-vault-75018776Unlock vault
workspace-vault-page.future-operator-unlocks-d5e00addFuture operator unlocks
workspace-vault-page.save-or-replace-an-3d549aa4Save or replace an entry
workspace-vault-page.project-98595978Project
workspace-vault-page.environment-9e471951Environment
workspace-vault-page.development-21b6a798Development
workspace-vault-page.preview-324b134fPreview
workspace-vault-page.production-13a7c655Production
workspace-vault-page.type-baaddf70Type
workspace-vault-page.environment-variable-b86ad171Environment variable
workspace-vault-page.api-key-16f0ee47API key
workspace-vault-page.password-e7cf3ef4Password
workspace-vault-page.api-token-f01bd2beAPI_TOKEN
workspace-vault-page.value-8e37953dValue
workspace-vault-page.save-encrypted-entry-a97fe563Save encrypted entry
workspace-vault-page.project-credentials-e97839e3Project credentials
workspace-vault-page.no-saved-entries-yet-ff76ee2aNo saved entries yet. Choose a project above to add its first credential.
workspace-vault-page.updated-3a5ecca1Updated
workspace-vault-page.utc-7e5f76c9UTC
workspace-vault-page.replace-95e15439Replace
workspace-vault-page.hide-ac20a57bHide
workspace-vault-page.reveal-36b830bdReveal
agent-profiles-panel.telegram-contacts-balances-696d1ea0Telegram contacts & balances
agent-profiles-panel.keep-contact-details-separate-2a739a2aKeep 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-cd17bfecManage the connected bot, groups and alert routes on Home
agent-profiles-panel.add-contact-profile-dc489ab0Add contact profile
agent-profiles-panel.record-balance-54ef2bf4Record balance
agent-profiles-panel.edit-contact-profile-56d4ee0aEdit contact profile
agent-profiles-panel.new-contact-profile-f50d6222New contact profile
agent-profiles-panel.profile-agent-id-f20b0edeProfile agent ID
agent-profiles-panel.profile-player-id-optional-c514d3b2Profile player ID (optional)
agent-profiles-panel.display-name-2b7f6a84Display name
agent-profiles-panel.telegram-user-id-37038770Telegram user ID
agent-profiles-panel.telegram-username-e936cc5bTelegram username
agent-profiles-panel.username-93100fc4@username
agent-profiles-panel.telegram-group-chat-id-b4c84b6fTelegram group chat ID
agent-profiles-panel.group-display-name-d9033002Group display name
agent-profiles-panel.group-topic-id-optional-5dc72935Group topic ID (optional)
agent-profiles-panel.contact-notes-04a6bf4eContact notes
agent-profiles-panel.save-contact-profile-3e7a1d2dSave contact profile
agent-profiles-panel.close-contact-editor-004a5a9aClose contact editor
agent-profiles-panel.agent-fd33e417/ Agent
agent-profiles-panel.telegram-id-a19c2c9dTelegram ID:
agent-profiles-panel.not-entered-18d90dcfNot entered
agent-profiles-panel.username-5521781e· Username:
agent-profiles-panel.group-aff83496Group:
agent-profiles-panel.no-id-4d48acc5No ID
agent-profiles-panel.topic-value1-d8440d55· Topic {value1}
agent-profiles-panel.edit-contact-81cd065aEdit contact
agent-profiles-panel.no-contact-profiles-yet-849ea887No contact profiles yet.
agent-profiles-panel.balances-usd-eb0b5be3Balances · USD
agent-profiles-panel.agent-settlement-positive-means-4a2738e4Agent 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-2c82f495New balance observation
agent-profiles-panel.balance-kind-71b20fe7Balance kind
agent-profiles-panel.agent-settlement-05ebf5fcAgent settlement
agent-profiles-panel.player-account-037e79ebPlayer account
agent-profiles-panel.balance-agent-id-5d4a55b6Balance agent ID
agent-profiles-panel.balance-player-id-required-f15c922cBalance player ID (required for player balance)
agent-profiles-panel.signed-balance-usd-4f8fd89fSigned balance (USD)
agent-profiles-panel.balance-as-of-d72d8950Balance as of (
agent-profiles-panel.balance-source-or-reconciliation-f88eeb5bBalance source or reconciliation reference
agent-profiles-panel.report-or-reconciled-statement-0187249aReport or reconciled statement reference
agent-profiles-panel.balance-notes-c6fd1f35Balance notes
agent-profiles-panel.save-unconfirmed-balance-70b22a8fSave unconfirmed balance
agent-profiles-panel.close-balance-editor-6273ff33Close balance editor
agent-profiles-panel.agent-settlements-6f193606Agent settlements
agent-profiles-panel.player-accounts-667d957aPlayer accounts
agent-profiles-panel.as-of-43157504As of
agent-profiles-panel.confirmed-observation-not-a-fd257a4eConfirmed observation · not a live balance
agent-profiles-panel.no-confirmed-balance-unknown-cfdaecd4No confirmed balance. Unknown is not zero.
agent-profiles-panel.balance-observations-and-confirmation-e45eba47Balance observations and confirmation history (
agent-profiles-panel.as-of-aaa06543· as of
agent-profiles-panel.unconfirmed-3229d16cUnconfirmed
agent-profiles-panel.confirmed-value1-ct-0ea2e2c2Confirmed {value1} CT
agent-profiles-panel.review-balance-df451238Review balance
agent-profiles-panel.confirm-balance-observation-99299d9eConfirm balance observation
agent-profiles-panel.i-checked-the-balance-f53bad08I 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-d05da1e7Confirm balance
agent-profiles-panel.cancel-balance-review-026b7bf0Cancel balance review
agent-profiles-panel.contact-change-history-45b5abc4Contact change history (
agent-profiles-panel.created-d70b9e24Created
sidecar-resources-panel.sentinel-live-cpu-memory-6e2d258fSENTINEL · LIVE CPU & MEMORY
sidecar-resources-panel.bun-value1-pid-value2-f1799ee1Bun {value1} · PID {value2} · {value3}
sidecar-resources-panel.operator-access-111b837cOPERATOR ACCESS
sidecar-resources-panel.unlock-measurements-d96a11e8Unlock measurements
sidecar-resources-panel.sampler-warming-up-first-c56bf557Sampler warming up. First measurement takes five seconds.
sidecar-resources-panel.cpu-one-core-last-585ad575CPU · one core · last interval
sidecar-resources-panel.mib-dea6cb8dMiB
sidecar-resources-panel.resident-memory-36326b34Resident memory
sidecar-resources-panel.javascript-heap-b369b468JavaScript heap
sidecar-resources-panel.unavailable-ca184496Unavailable
sidecar-resources-panel.established-process-tcp-connections-ccdd5b84Established process TCP connections
sidecar-resources-panel.sentinel-quiet-window-3c4c57bbSentinel-quiet window
sidecar-resources-panel.active-sentinel-window-b9b9c85dActive Sentinel window
sidecar-resources-panel.collecting-a-one-minute-b0a822beCollecting 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-3115fb10WebSockets:
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-1c428b13Known timers:
sidecar-resources-panel.sampler-36acc522sampler +
sidecar-resources-panel.sentinel-heartbeats-cron-schedules-681f94b2Sentinel heartbeats · cron schedules:
sidecar-resources-panel.process-timer-total-unavailable-e397a832. Process timer total: unavailable.
sidecar-resources-panel.sample-720206d6Sample:
sidecar-resources-panel.window-ending-4bfb8dc8· window ending:
sidecar-resources-panel.warming-up-32cd1518warming 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-8d600324Board data status
data-screen.replay-data-5a4d4a50REPLAY DATA
data-screen.seed-367ef06bSeed
data-screen.clock-cd7e23a2· clock
data-screen.tracked-lines-2d29b394tracked lines
data-screen.game-live-labels-describe-d4ad0eecGame LIVE labels describe replay game state
data-screen.provider-freshness-unavailable-99f61561Provider freshness unavailable
data-screen.replay-clock-is-not-d26b240eReplay clock is not a source timestamp
data-screen.sentinel-diagnostics-9cc2bc82Sentinel diagnostics
data-screen.observation-diagnostics-5e9a19a0Observation diagnostics
data-screen.close-diagnostics-1434270bClose diagnostics
data-screen.the-board-below-is-2bb2c2d9The 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-2212fb7aOpen live Sentinel events and snapshots ↗
data-screen.recent-replay-diagnostics-8225c187Recent replay diagnostics
data-screen.b-g-f-a-08333d64B 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-9bacffd4Tap a row to inspect evidence
data-screen.row-density-93a6a5e7Row density
data-screen.comfortable-459a23a5Comfortable
data-screen.compact-99452646Compact
data-screen.select-a-row-to-b1466ef4Select a row to inspect its evidence. Scroll the table for additional columns.
data-screen.row-evidence-c4080489Row evidence
data-screen.close-evidence-56bd57a9Close evidence
data-screen.replay-line-a2bb650aREPLAY · line
data-screen.prices-moves-tickets-and-5addd8e7Prices, moves, tickets and signals below belong to the replay. No live provider timestamp is available.
telegram-directory-page.telegram-people-94a43a3eTELEGRAM / PEOPLE
telegram-directory-page.customers-employees-d54bc817Customers & employees
telegram-directory-page.private-contacts-telegram-links-daac9064Private contacts, Telegram links and retained delivery evidence.
telegram-directory-page.open-desk-telegram-console-cf044351Open Desk Telegram console
telegram-directory-page.bot-delivery-management-52343ee1Bot & delivery management
telegram-directory-page.existing-account-profiles-balances-c91391c3Existing account profiles & balances
telegram-directory-page.provider-and-agent-references-556a7212Provider 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-4139fe2ePrivate operator access
telegram-directory-page.checking-private-directory-4b2e4d86Checking private directory…
telegram-directory-page.directory-operator-token-e5933aa5Directory operator token
telegram-directory-page.unlock-directory-19472ad1Unlock directory
telegram-directory-page.refresh-directory-c86d4509Refresh directory
telegram-directory-page.lock-directory-f1fb4377Lock directory
telegram-directory-page.add-a-contact-19897b38Add a contact
telegram-directory-page.contact-type-9c37f4abContact type
telegram-directory-page.employee-14014e6aEmployee
telegram-directory-page.provider-customer-or-employee-190795a5Provider customer or employee reference
telegram-directory-page.agent-reference-optional-e50ffa16Agent reference (optional)
telegram-directory-page.provider-login-username-c788fdddProvider login username
telegram-directory-page.telegram-username-optional-ee24897aTelegram username (optional)
telegram-directory-page.associated-bot-30f20420Associated bot
telegram-directory-page.no-bot-association-4a96fe37No bot association
telegram-directory-page.private-notes-72ff78fbPrivate notes
telegram-directory-page.save-contact-d24f121fSave contact
telegram-directory-page.cancel-edit-6fa27145Cancel edit
telegram-directory-page.provider-account-evidence-36a9b916Provider account evidence
telegram-directory-page.match-customers-using-agent-dcb505c9Match 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-9b9a8d05Read
telegram-directory-page.ct-ticker-d533c029CT · ticker
telegram-directory-page.available-ddd9818aavailable
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-7827950aCounts 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-cc29ced0total observed account scopes ·
telegram-directory-page.shown-baaf5362shown
telegram-directory-page.first-200-only-use-3c203e3e· first 200 only; use exact lookup below
telegram-directory-page.lookup-agent-id-8a05a201Lookup agent ID
telegram-directory-page.lookup-customer-id-8462b851Lookup customer ID
telegram-directory-page.look-up-exact-account-7c1ef492Look up exact account
telegram-directory-page.choose-from-4279f50eChoose from
telegram-directory-page.observed-accounts-6721c897observed accounts
telegram-directory-page.wagers-bf426c6awagers ·
telegram-directory-page.weblog-observations-7c153d67weblog observations ·
telegram-directory-page.identity-conflict-22a3efc2Identity conflict
telegram-directory-page.observed-account-1121a354Observed account
telegram-directory-page.prepare-ee820467Prepare
telegram-directory-page.contact-093e7d5fcontact
telegram-directory-page.loading-provider-evidence-0f8278d5Loading provider evidence…
telegram-directory-page.directory-192761b5Directory ·
telegram-directory-page.contacts-aa5af408contacts
telegram-directory-page.search-people-8a7e7f1bSearch people
telegram-directory-page.reference-6ffe5232· Reference
telegram-directory-page.not-entered-8103c336not entered
telegram-directory-page.agent-8f94361a· Agent
telegram-directory-page.unverified-5c0ece28↗ · unverified
telegram-directory-page.no-telegram-username-entered-7a274758No Telegram username entered.
telegram-directory-page.provider-login-a11cfae7Provider login:
telegram-directory-page.feed-match-5d7a7826· Feed match:
telegram-directory-page.not-loaded-use-exact-1b1870acnot loaded; use exact lookup
telegram-directory-page.distinct-wagers-in-retained-b197a933distinct 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-4ae8fe67Weblog evidence unavailable
telegram-directory-page.recent-wager-ids-159ab166Recent wager IDs:
telegram-directory-page.last-weblog-timestamp-provider-2cb70615Last weblog timestamp (provider):
telegram-directory-page.none-observed-05705fa0none observed
telegram-directory-page.customer-login-account-activity-a62e6745Customer login & account activity
telegram-directory-page.provider-weblog-observations-in-9f806a16Provider 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-8148c445No directly matched activity in this sample. This does not prove inactivity.
telegram-directory-page.bot-52fbad24Bot:
telegram-directory-page.not-associated-7632707anot associated
telegram-directory-page.saved-b5c120b3Saved
telegram-directory-page.revisions-437f95fdrevisions
telegram-directory-page.edit-464c4ffdEdit
telegram-directory-page.no-contacts-match-this-0502756dNo contacts match this search.
telegram-directory-page.no-contacts-saved-add-9f059776No contacts saved. Add a customer or employee above.
telegram-directory-page.delivery-evidence-archive-7773aa6cDelivery evidence archive
telegram-directory-page.save-the-latest-25-08529558Save 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-a82b1143Archive current delivery attempts
telegram-directory-page.attempts-1ac7d61dattempts
telegram-directory-page.sidecar-observed-fe79722dSidecar observed
telegram-directory-page.no-destination-e67e03daNo destination
telegram-directory-page.topic-value1-f8f33d44/ topic {value1}
telegram-directory-page.no-attempts-returned-in-c16c5db5No attempts returned in this snapshot.
telegram-directory-page.no-delivery-snapshots-saved-00bc03c8No delivery snapshots saved yet. Current attempts remain available in bot management.
telegram-directory-page.directory-change-log-68f759f9Directory change log
telegram-directory-page.immutable-revisions-retained-in-ae7e19daImmutable 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-a3a9b15aShowing latest 50 of
telegram-directory-page.revisions-eec319aarevisions.
telegram-directory-page.no-directory-changes-recorded-26337504No directory changes recorded.
directory-business-records.manual-deals-accounting-b2a94289Manual deals & accounting
directory-business-records.deal-drafts-and-not-d253d236Deal 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-91cf117bRecord type
directory-business-records.deal-draft-fcee89a7Deal draft
directory-business-records.accounting-observation-cbeb1b60Accounting observation
directory-business-records.record-title-b02f8c22Record title
directory-business-records.customer-contact-c4ad3b02Customer contact
directory-business-records.no-customer-selected-4f89489aNo customer selected
directory-business-records.amount-usd-24f52bfeAmount (USD)
directory-business-records.optional-304d9877· optional
directory-business-records.record-notes-d21a3ccdRecord notes
directory-business-records.save-record-revision-68b60aa4Save record revision
directory-business-records.save-manual-record-1326971eSave manual record
directory-business-records.cancel-record-edit-80fe558fCancel record edit
directory-business-records.accounting-observation-not-posted-f835488bAccounting observation · not posted
directory-business-records.amount-not-entered-c73a0308Amount not entered
directory-business-records.saved-identity-value1-value2-38cd0ce4Saved identity: {value1} / {value2} / {value3}
directory-business-records.no-customer-identity-attached-bbf032fbNo customer identity attached
directory-business-records.retained-revisions-9fac7f81retained revisions
directory-business-records.no-amount-b884dbf4No amount
directory-business-records.value1-usd-cents-d27f0ae8{value1} USD cents
directory-business-records.edit-record-20d0af43Edit record
directory-business-records.no-manual-deals-or-48e556baNo manual deals or accounting observations saved.
agent-settings-page.lock-settings-ab0f2127Lock settings
agent-settings-page.book-agreements-89e51956BOOK AGREEMENTS
agent-settings-page.agent-settings-41cd6b4eAgent settings
agent-settings-page.define-what-stays-on-037f2449Define what stays on your book, and what settles with each agent.
agent-settings-page.new-agreement-f09d5107New agreement
agent-settings-page.drafts-do-not-affect-991e6cd2Drafts 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-e71a1345Loading settings…
agent-settings-page.operator-access-key-763d14f5Operator access key
agent-settings-page.unlocking-a4114da0Unlocking…
agent-settings-page.unlock-settings-c3f37afcUnlock settings
agent-settings-page.try-loading-again-5350a631Try loading again
agent-settings-page.confirmed-versions-501b5954confirmed versions
agent-settings-page.drafts-bd949e87drafts
agent-settings-page.player-overrides-take-priority-843d6d4dPlayer overrides take priority within the same agent.
agent-settings-page.review-agreement-44e55668Review agreement
agent-settings-page.review-before-confirmation-e9637f14Review before confirmation
agent-settings-page.i-verified-the-ids-d58c381dI 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-4be29c18Confirm agreement
agent-settings-page.cancel-review-87a8ca7fCancel review
agent-settings-page.agreements-fa5fda37Agreements
agent-settings-page.find-agent-or-player-54cec223Find agent or player
agent-settings-page.reload-bdc090ecReload
agent-settings-page.no-agreements-yet-66c5edd2No agreements yet
agent-settings-page.start-with-an-agent-fafede02Start 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-654ba142Create first agreement
agent-settings-page.all-players-3ed06e8c/ All players
agent-settings-page.keep-183f00f4Keep
agent-settings-page.risk-8d8a4b77risk ·
agent-settings-page.winnings-db3fdd7fwinnings ·
agent-settings-page.commission-22c2ada6commission
agent-settings-page.view-terms-0128c0a3View terms
agent-settings-page.edit-draft-4452cbdbEdit draft
agent-settings-page.review-confirm-42555cacReview & confirm
agent-settings-page.use-as-new-version-97dc824bUse as new version
agent-settings-page.change-history-964de7c9Change history
agent-settings-page.confirmation-is-recorded-as-1ad74244Confirmation is recorded as an operator action. The shared operator key does not identify an individual person.
agent-settings-page.confirmed-agreement-99e821a9Confirmed agreement
agent-settings-page.saved-draft-41c82369Saved draft
agent-settings-page.applies-to-6687458bApplies to
agent-settings-page.all-players-980709ddAll players
agent-settings-page.we-keep-7986b830We keep
agent-settings-page.risk-d0c31ca6risk /
agent-settings-page.winnings-6bced10bwinnings
agent-settings-page.commission-3d41e1a6Commission
agent-settings-page.settlement-711b5c6aSettlement
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-c9526162Loss carry-forward
agent-settings-page.yes-85a39ab3Yes
agent-settings-page.no-1ea442a1No
agent-settings-page.effective-window-f5789820Effective window
agent-settings-page.earlier-version-e12fd2a2Earlier version
agent-settings-page.closes-the-selected-earlier-446ac69cCloses the selected earlier agreement at this start time
agent-settings-page.no-replacement-ca805fbfNo replacement
agent-settings-page.notes-8a7525b1Notes
agent-settings-page.new-version-7246e01bNew version
agent-settings-page.who-this-agreement-covers-7a644f4cWho this agreement covers
agent-settings-page.fantasy402-agent-id-d0b1d8a6Fantasy402 agent ID
agent-settings-page.provider-agent-id-2229d742Provider agent ID
agent-settings-page.player-id-override-optional-50c12814Player ID override (optional)
agent-settings-page.blank-applies-to-all-7ed92c0dBlank applies to all players
agent-settings-page.retained-shares-5e4ac4c0Retained shares
agent-settings-page.enter-the-share-of-3dc6b097Enter the share of risk and winnings that stays on our book. Commission is separate.
agent-settings-page.risk-we-keep-c12a0d6cRisk we keep (%)
agent-settings-page.winnings-we-keep-9e5dac40Winnings we keep (%)
agent-settings-page.commission-and-settlement-6fc0bf74Commission and settlement
agent-settings-page.commission-8e6de299Commission (%)
agent-settings-page.commission-base-791d0030Commission base
agent-settings-page.choose-a-base-68fb7502Choose a base
agent-settings-page.payment-direction-ec8af214Payment direction
agent-settings-page.choose-a-direction-c1120f24Choose a direction
agent-settings-page.settlement-period-ea9c0282Settlement period
agent-settings-page.daily-b36c2611Daily
agent-settings-page.weekly-29751324Weekly
agent-settings-page.monthly-calendar-month-6a91454bMonthly (calendar month)
agent-settings-page.weekly-period-starts-4ee6652fWeekly period starts
agent-settings-page.period-boundary-time-65f52d95Period boundary time
agent-settings-page.time-zone-b9fe1464Time zone
agent-settings-page.carry-losses-into-the-37d45f6cCarry losses into the next settlement period
agent-settings-page.period-boundaries-define-the-ec57d2d2Period boundaries define the accounting window, not an automatic payment. Commission bases must be reconciled before any amount is accrued.
agent-settings-page.effective-dates-dc8d76efEffective dates (
agent-settings-page.effective-start-0c11e0beEffective start
agent-settings-page.effective-end-optional-146f830fEffective end (optional)
agent-settings-page.replace-an-earlier-agreement-5d971485Replace an earlier agreement
agent-settings-page.agreement-notes-b5a6fd0cAgreement notes
agent-settings-page.use-a-replacement-to-65199f76Use 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-3de10010Save draft
agent-settings-page.cancel-19766ed6Cancel
sentinel-diagnostics.live-sentinel-observations-6cbb27dfLive Sentinel observations
sentinel-diagnostics.leave-blank-to-reuse-64c1346aLeave blank to reuse Desk session
sentinel-diagnostics.connect-observations-6e0f2909Connect observations
sentinel-diagnostics.disconnect-observations-23d21358Disconnect observations
sentinel-diagnostics.no-observation-events-displayed-26494be3No observation events displayed.
telegram-volume-controls.message-volume-b0f828d9Message volume
telegram-volume-controls.choose-which-automatic-cards-a2444ed7Choose 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-ae1e4558Automatic message categories
telegram-volume-controls.repeat-interval-seconds-0205a2daRepeat interval (seconds)
telegram-volume-controls.the-interval-suppresses-repeats-e419496bThe 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-23e39291Saving…
telegram-volume-controls.save-message-controls-4ec78dffSave message controls
telegram-management.telegram-account-management-04e35e6cTelegram & account management
telegram-management.contacts-balances-16541351Contacts & balances
telegram-management.manage-the-same-sidecar-bf4d6a26Manage 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-7f3ef08fMini App, desktop & topic guide
telegram-management.in-a-private-bot-7a3c3b3bIn a private bot chat, send
telegram-management.desk-27dfb5c3/desk
telegram-management.to-open-the-mini-a1087868to 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-6707c94eAdd your bot to the group and enable Topics.
telegram-management.give-the-bot-manage-885bd791Give the bot Manage Topics permission, then send
telegram-management.setup-ffd42e51/setup
telegram-management.as-a-registered-manager-e4505f97as a registered manager.
telegram-management.use-c36d819eUse
telegram-management.routes-9a156fff/routes
telegram-management.to-inspect-destinations-and-aaa9b036to inspect destinations and
telegram-management.legend-14c3c126/legend
telegram-management.for-message-symbols-use-c803fd3dfor message symbols. Use People & routes below to edit filters.
telegram-management.loading-private-management-0d79a679Loading private management…
telegram-management.management-operator-key-2ce4b2b4Management operator key
telegram-management.unlock-management-16d059c7Unlock management
telegram-management.read-at-a4874894Read at
telegram-management.ct-refresh-to-check-85ca3a33CT · refresh to check changes
telegram-management.refresh-management-9b55055fRefresh management
telegram-management.lock-management-640055c4Lock management
telegram-management.management-views-21a3cb86Management views
telegram-management.connected-bot-0f43524eConnected bot
telegram-management.bot-identity-not-available-efaaf0a1Bot identity not available
telegram-management.bot-id-1e6129bdBot ID:
telegram-management.unknown-b764cdc0Unknown
telegram-management.configured-388893e6Configured:
telegram-management.update-poller-running-at-f5528227Update poller running at read time:
telegram-management.only-the-bot-connected-78a94797Only the bot connected to this sidecar is listed. Credentials stay on the server.
telegram-management.shared-alert-routing-ba339ab4Shared alert routing
telegram-management.approved-chats-b094a05capproved chats ·
telegram-management.enabled-routes-4f876aeeenabled routes
telegram-management.outstanding-turn-ins-c127abdfoutstanding turn-ins ·
telegram-management.overdue-0c2b22d2overdue ·
telegram-management.acknowledged-3ef25c84acknowledged
telegram-management.an-enabled-route-still-60c28940An enabled route still needs an approved chat and matching filters. It does not prove Telegram delivery succeeded.
telegram-management.recent-sidecar-delivery-attempts-4b7d6107Recent sidecar delivery attempts
telegram-management.latest-8730d3c2Latest
telegram-management.retained-attempts-this-is-27dc676cretained attempts. This is the sidecar record, separate from browser preview messages.
telegram-management.no-attempts-returned-this-46d1c579No attempts returned. This does not prove earlier history is empty.
telegram-management.these-edits-change-the-4253a140These edits change the existing bot registry. Contacts entered on agent profiles do not grant these permissions.
telegram-management.delivery-readiness-9a12d24cDelivery readiness
telegram-management.whole-chat-cd0e5a32/ whole chat
telegram-management.ready-for-matching-events-66a3bba6Ready for matching events
telegram-management.blocked-chat-approval-needed-e40f6276Blocked: chat approval needed
telegram-management.paused-e159b061Paused
telegram-management.no-routes-yet-run-a9014853No routes yet. Run /setup in your group or link a destination below.
telegram-management.contacts-linked-to-the-292ca29dContacts linked to the bot registry
telegram-management.username-not-entered-ff41ad0eUsername not entered
telegram-management.telegram-id-a9f2270d· Telegram ID
telegram-management.no-id-5518a24cno ID
telegram-management.user-id-registered-f50e7d31User ID registered:
telegram-management.unverified-33c8e8deUnverified
telegram-management.agent-scope-matches-2cf07c3d· Agent scope matches:
telegram-management.not-verified-15133907Not verified
telegram-management.username-matches-last-bot-330a4828Username matches last bot observation:
telegram-management.group-approved-404c5d89· Group approved:
telegram-management.no-unverified-ddcdd45aNo / unverified
telegram-management.enabled-routes-in-this-d7bff0b0enabled routes in this group/topic
telegram-management.no-contact-profiles-entered-096dab30No contact profiles entered.
telegram-management.agent-settlement-balances-70931b60Agent settlement balances
telegram-management.player-account-balances-3f916293Player account balances
telegram-management.positive-agent-owes-us-3bf62203Positive: agent owes us. Negative: we owe the agent.
telegram-management.positive-player-credit-negative-9463c621Positive: player credit. Negative: player debt.
telegram-management.confirmed-manual-observation-750cf69f· confirmed manual observation
telegram-management.edit-private-contacts-and-8743128cEdit private contacts and record balances
telegram-management.shared-sidecar-alert-rules-4cc1c87cShared sidecar alert rules
telegram-management.changes-apply-to-the-27be719fChanges apply to the bot’s existing automation. Quiet-hour interpretation and message formatting stay with that automation.
telegram-management.alerts-and-thresholds-bbad63b6Alerts and thresholds
telegram-management.high-alerts-enabled-3c490b16High alerts enabled
telegram-management.health-alerts-enabled-f37bb757Health alerts enabled
telegram-management.steam-minimum-books-c9667fb4Steam minimum books
telegram-management.sharp-wager-threshold-usd-6236627eSharp wager threshold (USD)
telegram-management.turn-in-threshold-usd-024df59cTurn-in threshold (USD)
telegram-management.throttle-seconds-6a2bcd6eThrottle (seconds)
telegram-management.acknowledgment-sla-seconds-05009383Acknowledgment SLA (seconds)
telegram-management.use-quiet-hours-6cff3cffUse quiet hours
telegram-management.quiet-hours-start-0-1c9c0002Quiet hours start (0–23)
telegram-management.quiet-hours-end-0-82938c64Quiet hours end (0–23)
telegram-management.save-shared-alert-rules-41c0a587Save shared alert rules
opportunity.titlePlay review and ROI
opportunity.tabPLAY REVIEW / ROI
opportunity.eventEvent
opportunity.sportSport
opportunity.marketMarket type
opportunity.agentRouting agent
opportunity.strategyStrategy
opportunity.evidenceEvidence
opportunity.relatedRelated tickets
opportunity.reviewReview state
opportunity.review-forReview state for {event}
opportunity.settlementResult state
opportunity.live-scannerVerified live comparison ranking
opportunity.live-expiry-noteEligibility 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-noteRanked 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-evidenceMarket: {market}. Venue: {venue}. Sharp venue: {sharp}. Fee source: {fees}.
opportunity.live-unavailableScanner results are unavailable from this sidecar version. Refresh after the matching sidecar update.
opportunity.saved-localReview choices stay on this browser for 30 days, across panel closes and reloads. They do not sync between devices.
opportunity.save-unavailableBrowser storage is unavailable. Review choices remain in memory and may be lost when this panel closes.
opportunity.source-noteREPLAY 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.searchSearch sport, market, agent or strategy
opportunity.allAll review states
opportunity.feesModel replay with zero fees (explicit assumption)
opportunity.rows{n} tickets in this view
opportunity.roiReplay net ROI: {roi} on {n} eligible settlements
opportunity.profitReplay net profit: {amount}
opportunity.openOpen replay stake: {amount}
opportunity.excludedExcluded: {n}; unknown fees: {fees}
opportunity.emptyNo matching tickets. Clear search or change review state.
opportunity.rating-noteEvidence completeness out of four checks, not confidence or estimated edge.
opportunity.ticketInspect ticket
opportunity.performanceSignal performance by source and strategy
opportunity.performance-noteFewer 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.scannerEdge validation: {n} eligible / {blocked} blocked
opportunity.scanner-noteThis 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.draftTelegram review draft
opportunity.draft-noteReview-only HTML draft. No destinations or private ticket identifiers. Nothing is sent.
opportunity.channelSource channel
opportunity.signal-row{mode} · {strategy} · {status} · {n} results · ROI {roi} · CLV {clv} · Drawdown {drawdown}
opportunity.periodPlacement window
opportunity.all-periodsEntire replay tape
opportunity.hourPast replay hour
opportunity.four-hoursPast four replay hours
opportunity.dayPast replay day
opportunity.breakdownROI 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 (&lt; 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.

LiteralFileReason
Bun.markdownsrc/components/docs/docs-shell.tsxA runtime API name printed as code, the same in every language
compactsrc/components/desk/health-page.tsxThe compacted file name the archive writes, printed as code
DESK_ARCHIVE_DIRsrc/components/desk/health-page.tsxAn environment variable name printed as code
part-MMSSmmm-<hash>src/components/desk/health-page.tsxThe 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

SettingValueNote
site.urlhttps://desk.bookdeskops.comCanonical origin for every page
theme.defaultdarkTheme before the visitor picks one
theme.storageops.themelocalStorage key for the visitor's pick
storage.play-reviewdesk.play-review.v1Replay review choices, bounded to 1000 ticket identities for 30 days
storage.prefsdesk.prefs.v1Desk view: names, odds format, window, devig method
storage.filterdesk.filter.v1Desk bet-feed filters
storage.sharpsdesk.sharps.v1Manual sharp overrides
storage.booksdesk.books.v1Book columns on the odds grid
storage.notifydesk.notify.v1Telegram routes and mutes
storage.notify-healthdesk.notify.health.v1Last Telegram health check
storage.rulesdesk.rules.v1Alert thresholds and pattern rules
storage.tabledesk.table.{id}.v1One desk table's sort, group and column layout
storage.panesdesk.panes.{id}.v1One 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.system System is in the theme cycle and the switch
  • ☑ theme.contrast Contrast is in the theme cycle and the switch
  • ☑ keys.pages Number keys jump between pages
  • ☑ keys.global The theme key and the shortcut sheet work outside the desk