Skip to content

docs: fix Bet365 tier + 3 audit doc gaps (c8594804) — Fixes #265#268

Open
Mlaz-code wants to merge 1 commit into
mainfrom
docs/265-c8594804-audit-fixes
Open

docs: fix Bet365 tier + 3 audit doc gaps (c8594804) — Fixes #265#268
Mlaz-code wants to merge 1 commit into
mainfrom
docs/265-c8594804-audit-fixes

Conversation

@Mlaz-code

Copy link
Copy Markdown
Collaborator

What

Closes the four documentation gaps from the Crisp c8594804 diligence audit (engineering verdicts in Mlaz-code/sharp-api-go#885). Each fix was verified against current code, not just the issue text.

# Gap Code truth Fix
1 live-vs-prematch.mdx tier table lists Bet365 = Pro RequiresTier: "hobby" (sharp-api-go/sportsbooks.go:33-34); api-reference/sportsbooks.mdx already says Hobby Bet365 → Hobby (all 4 locales)
2 stream.mdx documents channel as a single value only sse.go:253-271 accepts channel/channels as CSV; >1 valid channel collapses to all; WS does true selective multi-channel Documented the channels alias + collapse-to-all, with a callout contrasting the WS API (all 4 locales)
3 /odds/bestis_main_line reads like a "main game lines only" filter is_main_line is per-(event, market_type, selection) cohort, so period/prop mains legitimately carry is_main_line=true; ?market=main is the full-game filter (main.go:7721-7730) Added a callout spelling out is_main_line vs ?market=main (all 4 locales)
4 event-matching.mdx documents the _bN bucket but gives no cross-bucket grouping recipe strip_doubleheader_suffix / same_event strip _g{N} and keep _b{N}; bucket deliberately separates doubleheaders (api-adapters/utils/canonical_ids.py:531-559) Added the _g{N} doubleheader suffix + a two-level grouping recipe (safe same-fixture collapse vs. loose display grouping, with the doubleheader tradeoff stated)

Why the recipe has two levels (item 4)

The issue suggested a single recipe — strip _b{N}/_g{N} and group by {league}_{teams}_{date}. But the _b{N} bucket exists precisely to keep same-day doubleheaders and cross-midnight rematches apart, so blindly stripping it re-merges genuine doubleheaders. The doc now gives both levels and states the tradeoff honestly:

  1. Same-fixture collapse (recommended) — strip only _g{N}, keep _b{N} (mirrors the server-side same_event predicate).
  2. Loose matchup grouping (display) — also strip _b{N}, group by {league}_{teamA}_{teamB}_{date}, ±1 day; note that this collapses real doubleheaders.

Scope note (i18n)

Item 4 is English-only: the de / es / pt-BR event-matching.mdx pages predate the SHA-3432 _bN documentation entirely (they still show the old nba_celtics_lakers_20260208 date format and have no bucket section), so a grouping recipe has no coherent place to attach there. Items 1–3 are applied across all four locales. Follow-up: backfill the full _bN bucket section into the three translated event-matching.mdx pages.

Verification

  • npm run build (full pipeline — next build across all 4 locales, 224 pages) passes; pagefind indexes cleanly.
  • All <Callout> tags balanced; new code fences render inside the numbered list.

Fixes #265

Type: docs

🤖 Generated with Claude Code

Doc gaps surfaced by the Crisp c8594804 audit (eng verdicts in
Mlaz-code/sharp-api-go#885), each verified against current code:

- Bet365 live tier: live-vs-prematch.mdx tier table said Pro; code truth
  is RequiresTier="hobby" (sharp-api-go sportsbooks.go:33-34, and
  api-reference/sportsbooks.mdx already lists Hobby). Fixed in all 4 locales.

- SSE channel CSV semantics: stream.mdx documented `channel` as a single
  value. sse.go:253-271 accepts both `channel` and `channels`, each as a
  CSV, and collapses >1 valid channel to `all`; WS supports true selective
  multi-channel. Documented the distinction + link to the WS API (4 locales).

- is_main_line vs market=main on /odds/best: is_main_line is per-(event,
  market_type,selection) cohort, so period/prop mains legitimately carry
  is_main_line=true — it is NOT a "main game lines only" filter; ?market=main
  is (main.go:7721-7730). Documented the contrast (4 locales).

- _bN grouping recipe: event-matching.mdx documented the bucket but gave no
  cross-bucket grouping recipe. Added the _g{N} doubleheader suffix and a
  two-level grouping recipe mirroring same_event / strip_doubleheader_suffix
  (api-adapters canonical_ids.py). English only — the de/es/pt-BR
  event-matching pages predate the SHA-3432 _bN section entirely and need a
  separate i18n backfill (flagged in the PR).

Full site build (next build, all 4 locales) passes.

Fixes #265
Type: docs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Mlaz-code

Copy link
Copy Markdown
Collaborator Author

@Mlaz-code ⏰ ready-to-merge ping — this PR is clean + mergeable but has sat idle ~3.5 days (opened 2026-06-18 19:35Z, 0 reviews / 0 comments, untouched).

State: mergeable: MERGEABLE, mergeStateStatus: CLEAN, not draft, no pending checks. One click merges it.

On merge: Fixes #265 auto-closes and Vercel redeploys main, so the 4 c8594804-audit doc fixes go live on docs.sharpapi.io:

  • Bet365 live tier Pro → Hobby (matches sharp-api-go RequiresTier="hobby")
  • SSE channel/channels CSV semantics → collapses >1 valid channel to all (vs WS selective multi-channel)
  • is_main_line clarified as per-(event,market_type,selection) cohort vs the ?market=main filter
  • _bN cross-bucket grouping recipe (_g{N} doubleheader suffix)

Not live yet: origin/main still shows | Bet365 | Yes | … | Pro | (content/en/concepts/live-vs-prematch.mdx:123).

The de/es/pt-BR _bN i18n backfill is intentionally a separate follow-up (this PR fixes EN only for that section) — not a merge blocker.

Automated re-verification ping — crew #934 / Sentinel routine 53.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs fixes from c8594804 audit: Bet365 tier (Pro→Hobby), SSE channel CSV collapse, is_main_line vs market=main, _bN grouping recipe

1 participant