Executive summary
Hiro's local dashboard was unreachable because no process was listening on its web ports. The browser's connection-refused message was accurate and was unrelated to the dashboard API key.
The dashboard/API process was restarted independently, preserving the intentional shutdown of the Gemma model server and Telegram notifications.
The first hidden-process restart exposed a Windows console-encoding issue: the Unicode startup banner could not be written through the inherited cp1252 output encoding, so the process exited before binding a port.
A second restart forced UTF-8 for the child process and succeeded without changing application source.
The HTTPS root dashboard and its authenticated evaluation data feed were then verified. No evaluation, behavior, resolver, model, scoring, policy, or production-service change was made.
At the user request, the approved Gemma launcher subsequently started the exact Gemma 4 12B QAT model with maximum GPU offload, a 4096-token context, and one inference slot. Startup took 20.599 seconds and the launcher warmup took 0.260 seconds.
The first Telegram start exposed the same cp1252 background-output issue. Telegram was restarted with a UTF-8 child environment and reached its polling state successfully.
A final local-only model request returned READY in 0.217 seconds. The dashboard, model, and Telegram bot were all running, while the active evaluator count remained zero.
The phone web app was prompting for an API key because its private dashboard and chat requests correctly received HTTP 401 after browser-session storage was cleared.
Access logs confirmed that the phone was connecting directly through the private Tailscale network, while unrelated public internet scanners were also reaching the protected Funnel endpoint. Disabling authentication globally would therefore have exposed private and control routes.
Hiro now trusts only direct loopback and Tailscale address ranges. Those clients no longer need the API key, while public Funnel and other internet clients continue to require it.
The focused operational-boundary suite passed 15 tests and the complete repository suite passed 89 tests. Live checks returned 200 for no-key loopback and tailnet requests and 401 for a no-key public Funnel-style request.
The local benchmark dashboard was separately checked after the phone-authentication change. Its page and every read-only evaluation API it uses now load without an API key from trusted loopback access.
A follow-up search-indexing audit found no current technical block: the dated HTML, full JSON, robots file, and sitemap all returned HTTP 200 with correct content types; robots allowed the journal, the sitemap listed the canonical date URL, and the page declared index, follow.
Repository history showed that the July 14 page was initially published with noindex and became eligible for indexing only on July 15 at 4:24 PM Pacific. The search engine had therefore had roughly two days, not the full time since original publication, to reconsider it.
Public search returned no results for the entire bballstatistics.com domain, not merely the Hiro page. The journal is also absent from site navigation, leaving the sitemap and machine-readable discovery document as its primary crawl signals.
Official Google guidance says recrawling can take from a few days to a few weeks and does not guarantee inclusion. No indexing directive or website behavior was changed during this diagnostic pass.
The bballstatistics.com domain property was verified in Google Search Console and the canonical July 14 Hiro URL was inspected directly.
Google initially reported the URL as unknown, with no crawl, referring page, or referring sitemap. A priority indexing request was submitted and Googlebot Smartphone fetched the page successfully at 2:19 PM Pacific.
After the fetch, Google changed the state to Crawled - currently not indexed. A live URL test then reported that the URL is available to Google and that the page can be indexed.
The Hiro journal index was also added to the priority crawl queue to provide a referring page. The sitemap submission was accepted, but Search Console currently reports that the sitemap could not be read; that unresolved Google-side fetch state remains a follow-up.
Public retrieval and discovery were strengthened without adding Hiro to the NBA site's navigation. The generator now publishes a standards-based Atom feed containing the full update text and advertises that feed from every journal HTML page and from llms.txt.
The sitemap now carries an accurate date-only last-modified value for the journal index, latest alias, and every dated canonical page. A build-time validation gate checks the complete JSON schema, sitemap dates, Atom coverage and content, and IndexNow ownership file after every journal generation.
The deployed production validator completed 66 retrievals with zero failures across browser, curl, generic-bot, and ChatGPT-style user agents. The HTML, JSON, robots file, discovery document, sitemap, Atom feed, diagnostics, and ownership file all returned HTTP 200 with the expected content types and no user-agent-dependent bodies.
IndexNow received the journal index, latest alias, and all four canonical dated URLs. The first response was HTTP 202 while ownership-key validation was pending; a retry after the key was live returned HTTP 200, confirming receipt. This notification does not guarantee crawl selection or indexing.
At the user's explicit request, the earlier unlisted-homepage choice was reversed. The public NBA statistics homepage now contains a clear, visible, crawlable HTML link to the Hiro journal.