@@ -12,11 +12,83 @@ will move until v2 leaves alpha upstream.
1212## [ Unreleased]
1313
1414The fleet's x402 instrumentation sync (1.3.x) — measurement only, no payment
15- or gating code, per the network's "instrument first, price later" rule.
16- Documentation site and network wiring only; no ` dl2.* ` component changed.
15+ code — followed by the ** sign-in gate pilot** , which this site runs first for
16+ the network. Documentation site and network wiring only; no ` dl2.* ` component
17+ changed, and ` pip install dash-leaflet2 ` is untouched by any of it.
18+
19+ ### Added
20+
21+ - ** The sitemap stopped lying.** Every entry used to claim the page changed
22+ today, regenerated on every crawl — a sitemap asserting that 27 pages change
23+ daily is one search engines learn to discard wholesale. Each page now
24+ publishes the real date its prose last changed, and a page that declares no
25+ date gets no date: truth or silence.
26+
27+ - ** Google now sees this site's own icons.** The crawler document carried no
28+ favicon at all — browsers got six, Googlebot got zero, which is why search
29+ showed a generic globe. It also had no social image and described every
30+ documentation page as an untyped generic web page. All three now match what
31+ a browser gets. (Requires ` dash-improve-my-llms ` 2.6.0, which discovers the
32+ icons from ` assets/favicon_io/ ` with nothing declared.)
33+
34+ - ** A live "active now" figure** on the hub's dashboard, from a lightweight
35+ presence beacon alongside the existing hourly rollup. Display-only — the
36+ daily numbers still come from the rollup, which now reports every 15 minutes
37+ rather than hourly.
38+
39+ - ** The network directory caught up with the fleet** : muicharts, flexlayout
40+ and llms.2plot.dev added, and pannellum/emojimart restored now that they
41+ resolve — twelve peers, no dead links.
42+
43+ - ** A sign-in gate, shipped dark.** Documentation pages can now require an
44+ account. Nothing is gated yet: the site deploys with the gate wired and
45+ every verdict answering "allow", so the whole path runs in production
46+ before the single environment variable (` PAGE_DEFAULT_TIER=auth ` ) that
47+ turns it on — and setting that variable back is the entire rollback.
48+
49+ A signed-out visitor on a gated page gets a ** sign-in card at HTTP 200** ,
50+ not a redirect and not a 404: the URL stays shareable, and "Create free
51+ account" now carries the current page in its return trip, so a visitor
52+ lands back where they started instead of on the primary's home page. That
53+ return leak is the one user-visible bug this pass fixes today.
54+
55+ ** Machine surfaces stay open.** ` /<page>/llms.txt ` , the crawler document
56+ and the prerender keep serving prose to agents and crawlers while humans
57+ meet the card — a deliberate 30-day posture, switched network-wide later
58+ with ` LLMS_PUBLIC_DEFAULT=0 ` rather than per-page edits.
59+
60+ - ** ` GET /api/agent-key ` ** — the person-to-agent handoff. Copying a page's
61+ ` llms.txt ` URL while signed in now carries a key, so the link still
62+ resolves when it is pasted into an assistant, whose fetch arrives with no
63+ session cookie. Signed out, the copy button behaves exactly as before.
64+
65+ - ** The network's page-tier ceiling.** 2plot.dev can now restrict a page
66+ across the network; this site may lock a page down further but can never
67+ open one the network gated. A hub outage changes nothing for a signed-in
68+ reader — sessions resolve locally — and resolves to "gated" for anyone
69+ else, never to publishing restricted prose and never to a dead site.
1770
1871### Changed
1972
73+ - ** One access system instead of two.** ` tier: ` and ` visibility: ` in a page's
74+ frontmatter were independent fields naming the same four values, so a page
75+ could declare one tier and be enforced at another, with a control-board row
76+ that quietly disagreed. ` tier: ` is now canonical, ` visibility: ` is an
77+ accepted alias, and one declared value feeds both. ` PAGE_DEFAULT_TIER ` is
78+ likewise the canonical spelling of ` PAGE_DEFAULT_VISIBILITY ` , which is
79+ still read so the running service does not change posture underneath a
80+ deploy.
81+
82+ The control board keeps everything it did — live toggles, four tiers, and
83+ overrides that outlive a deploy — and its override is still the most
84+ authoritative local word on a page. What moved out of it is the decision
85+ itself, into ` lib/access.py ` .
86+
87+ - ** Admin surfaces now fail closed everywhere.** Documentation still falls
88+ open when Clerk is unavailable — it must never brick over a missing
89+ credential — but the retired resolver fell open for admin pages too. Only
90+ ` /admin/control-board ` 's own double gate stopped that mattering.
91+
2092- ** Analytics: Gen-1 single-module tracker retired for the boilerplate's
2193 trio.** ` lib/analytics_tracker.py ` (per-request JSON ledger),
2294 ` lib/traffic_rollup.py ` (the hub's own daily v2+v3 definitions — its
0 commit comments