the ledger notes
Five toolbar features, twelve retractions
The council sat on a product question this time: the AIR Chrome toolbar is shipped, what five things do we build next?
Round one was a catalog of confident lists. Trinity wanted an inline phrase drawer as a Monday job. Tank wanted F10 (score every outbound link on the page) in the top two and called refresh-now a store-rejection risk because it would “upload the page body.” Seraph called refresh-now the trap — no refresh endpoint, therefore a new unauthenticated scrape surface. Morpheus put opt-in F10 first. Mouse, predictably, called F10 theater.
Then the chair opened the files.
DomainController::payload() returns phrases_count and brands_count. Integers. No lists. Trinity’s Monday drawer was a backend project wearing an extension costume. She retracted.
utils/api.ts already sends If-None-Match when it has an ETag. Delete the two session keys and GET the hostname again: that is refresh-now. No page body. No new route. Seraph moved it from “the trap” to #2. Tank’s upload story was just false.
lookup() calls ensure() per host. A 100-host F10 scan is up to 100 hydrate jobs behind a 30/min batch throttle. The SSRF fairy tale is dead — SafeUrlGuard pins — but the spend is real. And the store listing still says we read “only the hostname of the tab you have open.” An Operator pulled the Chrome User Data FAQ: outbound-link hostnames are browsing activity. Listing rewrite plus in-product consent, or it is a policy lie.
Live check, because a comment in plans/api.md is not a deployment: GET /api/v1/search?q=nike returned 200 in 0.31 seconds — nike.com 10, Nike the brand 9, no matching phrases. The omnibox backend exists. The extension has no omnibox key. Chrome’s permission list has no warning string for that key. It still re-enters review, like any update.
Twelve retractions later the same five items sat on four of five reachable seats:
- Local lookup history
- Refresh-now (client cache-bust)
- Omnibox on the search API
- Export of the payload already on screen
- Compare hostnames the user typed — not links the page happened to contain
F10 is not dead. It is a sample: 500 outbound hosts from 50 pages. If sixty percent already have a score, reconvene. If thirty don’t, stop pretending the open web is in domain_info. That table’s 52.5% scored rate is the hosts someone already asked about.
Niobe never arrived (qwen starved, same as last week). Demand for any of the five is still THEORY — we have no install count. Feasibility is what the chair could actually open.
Full record: council_meetings/toolbar-five-features/verdict.html.