2026-05-05
-
Auth & Access engine foundation: new
agent-authcategory at 0.20 weight, NA semantics in score engine (null category excluded from overall-score weighting with re-normalization), rubric versioning on audits (rubricVersion: "2.0"),rubric_versioncolumn onaudit_historytable. -
Auth & Access category: 16 checks shipped across Bucket A (public API surface), B (OAuth surface), C (MCP-specific auth), D (bot/agent identity); 54 unit tests; rubric v2.0 active.
-
Auth & Access cascade (§5.6):
applyNaCascadepost-process in score engine skips 10 dependent checks when prerequisites fail;auth-discoveryprotocol check retired (superseded by A1+B1+D1/D3). -
Auth & Access calibration + rescore + UI banner:
scripts/rescore-all.tsbatch-rescores all seeded sites (batches of 5, 1s delay) and insertsaudit_historyrows stampedrubric_version='2.0'; supports--dry-runand--urls=for targeted runs. Calibration log atdocs/research/2026-05-05-auth-access-calibration.md(jintel.ai B/64, stripe.com C/45, resend.com C/53, twilio.com C/57, plaid.com C/56). Dismissible<RubricBanner>client component wired into/auditand/leaderboard(localStorage dismiss keyw2agent:rubric-v2-banner-dismissed). -
Add
data/seed/batch-5.csv: 123 ora B+ candidates across 12 categories (4 new: data-analytics, identity-auth, communication-support, sales-marketing); category labels added to directory categories page. -
Run scanner over batch-5 —
scripts/seed/batch-5-run.tsregisters all 123 curated ora B+ sites asagentSource: "batch5"across 12 categories; runs v2.0 rubric audits on each. Follow-up:enrich-discovered.ts --source=batch5for display names/descriptions,enrich-llms-content.tsfor llms.txt quality bar (≥10 pages gate for directory listing). -
Third-party score comparison on site detail —
sites.external_scoresjsonb column (migration 0024); ora.run score + grade surface on/sites/[slug]alongside w2agent score when present.pnpm backfill:ora-scorespopulates batch-5 sites fromdocs/research/assets/2026-05-03-ora-teardown/ora-leaderboard-2026-05-04.json. -
Blog + "State of Agent Readiness: May 2026" — new
/blogroute (index + first post). Post surfaces live leaderboard data: grade distribution bar chart, category averages, protocol adoption stats (llms.txt 32%, agent-card 0%, MCP 0%), rubric v2.0 / Auth & Access intro, top 10 table, and category leaders. Blog link added to site header Community section (en + zh i18n). File-based publishing pattern established — add a new post by adding a directory + entry toBLOG_POSTS. -
Multi-model benchmark (A3) — benchmark engine now runs two judges (gpt-5-mini + gemini-3-flash-preview) in parallel via
Promise.allSettled; per-model averages stored insites.benchmark_ratings(jsonb, migration 0025); consensus score (mean across judges) written tosites.benchmark_rating. Site detail page renders a per-model star row beneath the consensus line usingmodel.split("/").pop()label.JUDGE_MODELSconstant exported for test reuse; legacycomputeBenchmarkRatingremoved. -
Auto-generated audit insight (A5) — Gemini 2.5 Flash Lite generates a 1-sentence agent-readiness insight after each audit completes; stored in
report.summary(new optional field onAuditReport). Rendered in italic between the score ring and category bars on/audit/[id]. Fails gracefully (silent no-op) whenGEMINI_API_KEYis absent or the LLM call errors. -
Per-category qualitative labels (A4) — category breakdown on
/audit/[id]and the live audit tool now shows a Strong / Partial / Weak label after the numeric score. Derived fromcategoryLabel()inlib/ui-utils.ts: Strong ≥70, Partial 35–69, Weak <35. Null (N/A) categories display "N/A" in zinc-500. -
Score-delta on
/audit/[id](A6) — when a matchingauditHistoryrecord exists for the audited domain and the scores differ, a delta row renders below the grade: previous grade/score → current grade/score, with a+N pts/-N ptsbadge (emerald for improvement, red for regression). Gracefully absent when no prior DB record exists or DB is unreachable. -
IMG copy button on badge (D1) —
components/badge-preview.tsxnow renders a thirdCopyBlock(label "IMG") with the raw badge URL, alongside existing Markdown and HTML blocks. -
agents.mdgeneration (D3) — newgenerateAgentsMd()inpackages/core/src/generate/agents-md.ts; added"agents-md"toGenerateFormatunion andDEFAULT_GENERATE_OPTIONS.formats; dispatch block inengine.tsafter ctx construction; exported fromsrc/index.ts. Produces a structured markdown file (per the agents.md spec) summarizing site name, overview, capabilities (llms.txt/OpenAPI/MCP/sitemap), OAuth authentication metadata, AI bot permissions parsed from robots.txt, and top 15 key pages. 8 unit tests covering all sections; all 769 core tests pass. -
/.well-known/mcp.jsonfor w2agent.dev itself (E3) — newapp/.well-known/mcp.json/route.tsserves a static MCP server card describing the Meta MCP atagent.w2agent.dev. Contains all three required fields (name,version,capabilities) so w2agent.dev passes its own D4 audit check. Lists all 6 Meta MCP tools. 1-hour ISR + CDN cache. -
Three new blog posts (F3 complete) — ships remaining posts in the series: (2)
/blog/why-enterprise-sites-fail-agents— five failure modes from 136-site dataset, failure rates by industry, subcategory score breakdown, actionable fixes; (3)/blog/bot-visit-data-2026— 90-day AI bot visit data across audit network, top 10 crawlers by volume + market share, live DB query with static snapshot fallback; (4)/blog/agent-web-growth-90-day— adoption dashboard post usinggetAdoptionSnapshots(), protocol adoption bars, category breakdown, links to/adoptionfor full charts. Blog index updated with 3 new entries + cadence footer. Closes F3; subsumes L674 ("State of AI Readiness report").