Almanac visual QA — 2026-05
This file carries two unrelated bodies of work that happen to share a 2026-05 stamp. The first half is a one-off Almanac visual-QA pass on phareim.no (the original purpose of the slug). The second half — from "AI news digest" onward — is a running monthly digest of AI model and company-release churn for May 2026: terse, dated, claim-grouped bullets folded from ephemeral news so the firehose stays out of the thematic wiki. Read the digest section if you want "what shipped / who raised / what broke in AI in May 2026"; read the QA section if you want the phareim.no theme audit.
Pass run on 2026-05-12, phareim.no @
8657770(the QA commit itself). Rig:scripts/almanac-qa.mjs. Captures:~/github/phareim.no/.qa/almanac/<page>-<mode>.png+.vars.jsonper cell +status.json+index.json.
Why this exists
Almanac is the newest of four themes in [[phareim.no]] (scandi, hacker, space, almanac), added in commit c70bba1. The older three accumulated per-page CSS overrides one page at a time; Almanac inherits the override mechanism but not the overrides, so each page reveals whether anyone remembered to think about it. This pass is the baseline — next pass diffs against it.
Surfaced from sfl meta WF236ulE (priority HIGH).
Methodology (reproducible)
- Pinned to
phareim.no @ 8657770. Screenshots, vars sidecars, and ledger live in.qa/almanac/at that SHA. - Rig: Playwright headless via
playwright-core, pointingexecutablePathat the host's cached chromium (~/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome) so no browser download. - Server:
npm run devon:3030. - Viewport: 1280 × 900.
- Theme bootstrap: navigate →
localStorage.theme='almanac'→ reload →document.fonts.ready→ 600ms settle. Needed becausecomposables/useTheme.tsrestores theme insideonMounted, so first paint isscandiand the reload is what lands on Almanac. - Routes: 19 (18
pages/files pluserror.vuevia/this-does-not-exist). 19 × {light, dark} = 38 cells.
Known rig bug, not a defect: the overlay-detection selector (.nuxt-error, nuxt-error) does not match Nuxt's actual dev error overlay, which is visible bottom-right of error-light.png. Fix the selector before the next pass.
Out of scope (explicit non-goals)
- First-paint theme flicker / SSR hydration — screenshots are post-hydration only, so any flicker is invisible here. Tracked under sfl meta "Revisit SSR theme persistence". A reader who sees no flicker in this register should not conclude flicker is fixed.
- Interactive state — no hover, no tooltip, no focus rings. The three open
Stats heatmap tooltipmetas are pre-existing and unrelated to Almanac correctness. - Reduced-motion, print, mobile, RTL — separate concerns.
- Pixel-diff baseline — this run IS the baseline. Future passes can diff against
8657770. - Fixes — each cluster below becomes a follow-up
/find-a-fixagainst the metas listed at the bottom.
Almanac correctness checklist (derived from DESIGN.md)
- hairline-not-box — cards/sections use 1px rules (
--almanac-rule-light/--almanac-rule-dark), no shadows, no rounded panels (--theme-card-radius: 0perassets/themes/almanac.css). - accent-only-at-attention —
--almanac-rust(light) /--almanac-amber(dark) appears at most once per primary view, at the moment of attention. - serif-body-always — body type is the Georgia stack (
--font-almanac-body). - stars-dark-only —
AlmanacPaperstars render only in dark, sparse. - no-chrome — no gradients (except midnight bg), no shadows, no synthetic window decoration.
- paper / midnight bg —
--almanac-paper(#f4f0e8) in light, midnight gradient in dark. - CSS vars propagate — canvas/SVG elements read theme via CSS custom properties or inline overrides. Cross-checked via the per-cell
.vars.jsonsidecars. - link discipline — links read as ink, accent only on hover (color rule; hover behavior out of scope).
The .vars.json sidecars confirm the page-level wrapper (.almanac-page) propagates all eight semantic tokens correctly on all 19 routes in both modes — i.e. the theme system itself is sound. Every defect below is a per-page override that ignores those tokens.
Page × mode status table
| Page | Light | Dark | Notes |
|---|---|---|---|
/ (index) |
broken | broken | hardcoded saturated canvas circles, both modes (green/tan light, blue/purple dark) |
/about |
ok | ok | best-in-class Almanac fit |
/activity |
minor | minor | accent overuse (rule 2); dark cards near-invisible |
/clock |
ok | broken | dark: second hand has no visible accent (rust hardcoded, --theme-accent not applied) |
/colophon |
ok | ok | alignment baseline |
/feed |
ok | ok | |
/focus |
minor | broken | dark: 25:00 timer near-illegible, ring nearly invisible |
/gallery |
ok | ok | clean empty state |
/guestbook |
minor | minor | input radius non-zero; dark borders too subtle |
/lab |
broken | broken | green LIVE badges + red-dot emoji-style decoration + rounded cards — off-theme |
/meta |
minor | minor | commit cards rounded; dark borders too subtle |
/morse |
minor | minor | reference letter cards rounded; dark cards near-invisible |
/now |
ok | ok | best-in-class |
/playground |
minor | minor | filled rust/amber button (defensible); textarea + selects + image-frame rounded |
/projects |
minor | minor | cards rounded; dark cards near-invisible; title low contrast in dark |
/stats |
minor | minor | metric cards rounded; dark borders too subtle |
/terminal |
broken | broken | macOS-style window chrome (stoplight buttons + chrome bar + rounded frame) violates no-chrome |
/uses |
ok | ok | |
/this-does-not-exist → error.vue |
ok | ok | the 404 page itself is Almanac-correct; the dev-only error overlay in light is rig artifact, not a defect |
Tally: 9 cells broken, 18 minor, 11 ok, 0 known-gap.
The zero-known-gap count matters: it falsifies a prior assumption. The "Almanac scoped overrides for canvas/SVG pages" meta assumed canvas/SVG would fail to read CSS variables. The .vars.json sidecars and clock-light + morse + terminal text show the opposite — Almanac reaches SVG paint fine via currentColor and direct token reads. The canvas defects that remain (index circles, clock-dark second hand) are page-specific hardcoded colors, not a propagation gap. That meta needs re-scoping or closing — see cross-references.
Defects (ranked by leverage)
1. Landing page canvas decoration ignores Almanac — severity: blocker
File: pages/index.vue (canvas/SVG decoration logic).
Rule violated: 5 (no-chrome) and 7 (CSS vars propagate).
Evidence: .qa/almanac/index-light.png, .qa/almanac/index-dark.png — saturated green/tan (light) and blue/purple (dark) circles dominate the viewport, completely off-theme.
Why blocker: this is the first impression for every visitor on /. Under Almanac the landing page should be paper-with-restraint, not '90s-Geocities-circles.
Proposed fix: make the decoration theme-aware — either swap to an Almanac-specific variant (sparse stars from AlmanacPaper.vue already covers this aesthetic) or hide it entirely when activeTheme === 'almanac', mirroring how <SpaceStarfield v-if="activeTheme === 'space'" /> is conditional in app.vue.
2. Terminal page hardcodes macOS window chrome — severity: blocker
File: pages/terminal.vue (terminal-window decoration).
Rule violated: 5 (no-chrome).
Evidence: terminal-{light,dark}.png — red/yellow/green stoplight buttons, chrome title bar with phareim@phareim.no — bash, rounded window frame. The hacker/space themes are clearly bleeding through.
Proposed fix: when activeTheme === 'almanac', render the terminal flat — drop the stoplights and the chrome bar, render the prompt as plain serif body text on paper / midnight. Could also keep bash-style monospace inside but lose the OS window decoration.
3. pages/clock.vue second hand has no Almanac-dark accent — severity: visible
Rule violated: 2 (accent-only-at-attention).
Evidence: clock-light.png shows rust second hand (correct moment-of-attention). clock-dark.png shows monochrome cream face — the second hand is either hardcoded rust (invisible against the midnight-similar value) or doesn't read --theme-accent (amber #d4a574 in dark).
Proposed fix: change second-hand stroke to var(--theme-accent) (or var(--almanac-amber) when dark mode is the only consumer). getComputedStyle on .almanac-page already returns --theme-accent: #d4a574 in dark — the page just isn't reading it.
4. Dark-mode hairline rule is too subtle — severity: visible (systemic)
File: assets/themes/almanac.css — the token --almanac-rule-dark: rgba(255, 255, 255, 0.10).
Rule violated: 1 (hairline-not-box) — the rule is technically present but visually absent on cards across activity, stats, projects, meta, morse, guestbook, focus.
Evidence: every *-dark.png cell with cards has near-zero card definition; cards float as untethered text.
Proposed fix: raise --almanac-rule-dark opacity to ~`0.18–0.22, OR split into --almanac-rule-dark-card(stronger) and--almanac-rule-dark-separator` (subtle, for short rules between sections). Cross-check that 0.18 doesn't muddy the "hairline" intent — DESIGN.md should be the arbiter.
5. pages/lab.vue has off-theme decoration — severity: visible
Rule violated: 7 (CSS vars propagate) and arguably 2.
Evidence: lab-{light,dark}.png — saturated green LIVE pill badges (color stays the same in both modes), red-dot emoji-style red circle as decoration for the /red-dot/ tool card.
Proposed fix: render LIVE badges as hairline pills with --almanac-ink-mute text (or --theme-accent if "this is live" is the moment-of-attention). The red-dot emoji is illustrative content for the project itself, so keep it but render under [data-theme="almanac"] with currentColor: var(--theme-accent) if it should harmonize.
6. pages/focus.vue dark-mode timer contrast — severity: visible
Rule violated: body text contrast (rule 3 implied via legibility).
Evidence: focus-dark.png — 25:00 numerals rendered in --theme-text-subtle (#5a6a7a) range, near-illegible against #0e1219 midnight. Light mode is fine.
Proposed fix: use var(--theme-text) (#ebe4d4 in dark) for the primary timer numerals, reserve subtle tones for the "ready" / state label.
7. Per-page border-radius overrides ignore --theme-card-radius: 0 — severity: nit (systemic, many sites)
Rule violated: 1 (hairline-not-box — Almanac is flat-rectangular by design).
Evidence: project cards, morse letter chips, playground textarea/selects/image-frame, stats metric cards, meta commit cards, focus keyboard-shortcut chips, guestbook inputs — all visibly rounded (~6–12px). Likely each has a per-page border-radius: <px> instead of reading var(--theme-card-radius, 0).
Proposed fix: grep border-radius: in pages/ + components/, replace literal radius values with var(--theme-card-radius, <fallback>). Set the fallback to whatever the other three themes want (likely 6–8px).
Note: this is a nit only because the visual offense per cell is small. As a pattern across 8+ pages it's the most ubiquitous Almanac violation, so the fix is one PR that touches many files. May be cheaper to address before the per-page bug fixes above.
Cross-references to sibling sfl metas
Almanac scoped overrides for canvas/SVG pages(MEDIUM) — revise framing. The rig disproves the premise: CSS vars propagate to canvas/SVG viacurrentColorand direct token reads on the pages that handle it correctly (clock-light, morse, terminal text). The remaining canvas-related defects are page-specific hardcodes (#1, #3 above), not a propagation gap. Either re-scope this meta to "page-specific canvas hardcodes in index.vue and clock.vue dark" or close and let the per-page metas cover it.Audit accent usage — accent-only-at-attention(LOW) — substantiated. activity-light and colophon both stack 4+ accent moments per view (links + headers + badges + dots). Defects in this register call out the worst offenders but the broader audit remains its own job.Revisit SSR theme persistence (first-paint flicker)— not addressed. Post-hydration screenshots cannot speak to this. Flagged explicitly in non-goals above.Reconcile prefers-color-scheme rule in CLAUDE.md(MEDIUM) — confirmed needs update.~/github/phareim.no/CLAUDE.mdstill describes "three themes" (scandinavian,hacker,space), lists keyboard shortcuts1 / 2 / 3without4, and says "Don't use@media (prefers-color-scheme: dark)— the theme system handles this" — Almanac is the explicit exception. The reconciliation work is genuinely owed.
Follow-up sfl metas filed
After this pass, the following meta items have been added to github.com/phareim/phareim.no (clustered by root cause, not per cell):
m0SDIsE4(priority A, blocker):pages/index.vue— make canvas decoration theme-aware under AlmanacmfkkOfaC(priority A, blocker):pages/terminal.vue— drop macOS window chrome under Almanac-nlSoyPK(priority B, visible):pages/clock.vue— second hand must use--theme-accentin Almanac dark6VPHE3Eb(priority B, visible, systemic): bump--almanac-rule-darkopacity or split card/separator tokens so cards are visible in darkWfI-CU1C(priority B, visible):pages/lab.vue— LIVE badges + decorative icons need theme-aware variants2zB9A8zK(priority B, visible):pages/focus.vue— dark timer contrast (--theme-textnot--theme-text-subtle)sAdRb1rE(priority C, nit, systemic): audit per-pageborder-radiusoverrides; route through--theme-card-radius
Reproducing this pass
cd ~/github/phareim.no
git checkout 8657770 # or HEAD if conventions remain stable
npm install
npm run dev & # binds :3030
npm run qa:almanac # writes to .qa/almanac/
Outputs: 38 PNGs + 38 .vars.json + index.json + status.json in .qa/almanac/. Re-grade by walking status.json against the checklist above.
See also
- sleeper-cognition-stack — phareim.no is one of the producers in the broader Sleeper graph
~/github/almanac-design/DESIGN.md— canonical spec; this checklist is its compression~/github/phareim.no/assets/themes/almanac.css— the implementation; reading it alongside the screenshots is the fastest way to spot which tokens a defective page is ignoring
AI news digest — May 2026
Ephemeral model and company-release churn for May 2026, paraphrased and grouped by claim. Entries are dated; provenance is in ## Sources at the bottom. This is a digest, not a per-item archive — verbatim source text stays in raw/.
Frontier model releases accelerated across every lab
- Claude Opus 4.8 (May 28) — agentic coding 64.3→69.2%, reasoning-with-tools 54.7→57.9%, 69.2% SWE-Bench Pro; fast mode 2.5× faster / 3× cheaper; effort-control slider on claude.ai; same price as 4.7 ($5/$25 per Mtok). Claude Code gains "dynamic workflows" for large-scale tasks; a coding-only Mythos model is teased for Claude Code.
- Google Gemini 3.5 Flash (May 19, GA same-day at I/O) — biggest Flash-tier release; 1M-token context, multimodal, $1.50/$9.00 per Mtok, ~4× faster than comparable frontier models, beats Gemini 3.1 Pro on coding/agentic benchmarks (76.2% Terminal-Bench 2.1). Became default in the Gemini app + Search AI Mode worldwide. Gemini 3.5 Pro confirmed in internal use for the following month. I/O also previewed Gemini Omni (any-to-any text/image/video), Gemini Spark (24/7 agentic assistant, gaining MCP support for Canva/Instacart/OpenTable), Antigravity 2.0, and DeepMind's Magic Pointer AI cursor.
- DeepSeek V4-Pro and V4-Flash (late May) — first production releases after the V4 Preview; MoE, 1M-token context, hybrid attention for low inference cost; Pro for quality, Flash for throughput; continues DeepSeek's cost-disruption pattern.
- xAI Grok 4.3 became the new default (May 15); xAI simultaneously retired 8 legacy Grok models, all redirecting to Grok 4.3.
- OpenAI GPT-Realtime voice suite (May 7) — GPT-Realtime-2 (first voice model with GPT-5-class reasoning), -Translate (70+→13 languages live), -Whisper (streaming STT); all in the API. OpenAI also deprecated DALL·E-2 and DALL·E-3 (May 12), pushing devs to gpt-image-1.5.
- Google Gemini 3.1 Flash Lite went GA (May 7) alongside Cloud Next '26.
Agentic coding tools are the central battleground
- Claude Code shipped a dense release train across May (v2.1.139→2.1.152): Agent View dashboard (
claude agents),/goalautonomous multi-turn command, Fast mode defaulting to Opus 4.7, plugin dependency enforcement, dynamic-workflows research preview, pinned sessions. v2.1.149 (May 22) added per-category/usagecost breakdown (skills/subagents/plugins/MCP), keyboard-scrollable/diff, GFM checkbox rendering, and several security fixes (PowerShell permission-bypass, sandbox write-allowlist not applied in git worktrees). - OpenAI Codex went mobile (May 14) — remote agent control from iOS/Android in the ChatGPT app across all tiers; review outputs, approve commands, switch models from a phone. Weekly Codex usage hit 4M. Backed by GPT-5.2-Codex (56.4% SWE-Bench Pro, 64.0% Terminal-Bench 2.0). Directly mirrors Claude Code's Remote Control.
- xAI launched Grok Build (May 15) — agentic coding CLI (8 parallel agents, 2M-token context, local-first, Arena Mode auto-eval), initially SuperGrok Heavy ($300/mo) only, later opened to all SuperGrok/X Premium subscribers and integrated into the Kilo Code IDE (May 27). Competes head-on with Claude Code.
The platform war moved down the stack into tooling and infrastructure
- Anthropic acquired Stainless (~$300M+, May 18) — the SDK-compiler used by OpenAI, Google, Cloudflare, Meta, Runway — and is winding down all hosted Stainless products, restricting SDK generation to its own teams. Rivals must rebuild their SDK toolchains. Clearest signal yet the AI platform war is now about developer tooling, not just model capability.
- OpenAI reorganized under Greg Brockman (May 16, four days before I/O) — merged ChatGPT, Codex, and the developer API into one "unified agentic platform"; Brockman confirmed permanent product chief; Nick Turley → Head of Enterprise; Atlas browser positioned as third "super app" pillar. Framed as IPO-preparatory.
- MCP 2026 spec RC locked (May 21; final spec July 28) — largest revision since launch: stateless core (removes initialize handshake + session IDs), MCP Apps + Tasks extensions, OAuth 2.0 hardening, Roots/Sampling/Logging deprecated.
- Anthropic put programmatic Claude usage in a separate billing pool (effective June 15, announced May 13–14) — Agent SDK /
claude -p/ third-party harnesses billed against a dedicated credit pool at API rates rather than subscription limits; independent estimates put the effective increase at 12×–175× for heavy agent users. OpenClaw and other agents reinstated under the new limits. - Base MCP (Coinbase, May 26) — first production bridge between LLM tool-calling and blockchain; lets Claude/ChatGPT/Cursor propose (but not autonomously sign) on-chain DeFi actions via OAuth 2.1.
Enterprise and vertical AI products multiplied
- Claude for Legal (May 12) — 12 practice-area plugins + 20+ MCP connectors (DocuSign, Ironclad, Datasite); early adopters Freshfields, Quinn Emanuel, Holland & Knight; Anthropic's biggest vertical push.
- Claude Platform on AWS went GA (May 11), with the AWS MCP server GA May 6.
- Google Gemini Enterprise Agent Platform launched at Cloud Next '26 — end-to-end agent build/govern/scale workspace, Agent Studio low-code builder, Agentic Data Cloud, 8th-gen TPUs; 260+ announcements, 32k attendees.
- OpenAI DeployCo (May 11) — $4B majority-owned enterprise deployment-services arm (TPG-led, 19 partners), acquired Tomoro for 150 engineers; embeds AI deployment engineers in client orgs, competing with McKinsey/Accenture. OpenAI also launched ChatGPT Personal Finance (May 15, Plaid integration, 12,000+ institutions, read-only).
- Baidu Create 2026 (May 14) — CEO Robin Li declared the "agent era," proposed Daily Active Agents (DAA) as the new core metric over token counts; unveiled DuMate, Famou Agent 2.0 (autonomous port ops, +10.21% at a container terminal), Miaoda coding agent.
Capital and talent concentrated at the frontier
- Anthropic in talks to raise ~$30B at a >$900B valuation (Bloomberg, May 12; round expected to close late May) — nearly triple its $380B February Series G; would top OpenAI's $852B March round as the highest-valued private AI company. ARR ~$14B (Claude Code ~$2.5B of it).
- Anthropic posted its first-ever operating profit with a projected ~$10.9B Q2 2026 revenue (reported May 20).
- Andrej Karpathy joined Anthropic (May 19) as a researcher on the pre-training team — choosing Anthropic over a return to OpenAI is itself read as a signal.
- Anthropic compute and partnerships: $1.8B/7-year Akamai compute deal (May 8, Akamai's largest contract, stock +27%); SpaceX Colossus 1 datacenter deal; a $200M/4-year Gates Foundation partnership (May 14) deploying Claude in global health, education, and agriculture.
- Nvidia committed >$40B to AI equity deals in 2026 (reported May 9) — largest single-company AI investor in history, anchored by a $30B OpenAI bet; critics flag "circular investment" risk.
- OpenAI filed a confidential S-1 (May 22) targeting a September 2026 IPO.
AI is now finding (and out-running) real vulnerabilities
- Project Glasswing / Claude Mythos Preview (first update May 22) — scanned 1,000+ open-source projects, flagged 23,019 potential vulnerabilities (6,202 high/critical), 90.6% true-positive rate in the reviewed sample; partners confirmed 10,000+ high/critical findings. Verification and patching, not discovery, is now the bottleneck.
- Mozilla × Claude Mythos (May 7) — agentic harness with reproducible PoC test cases found 271 Firefox vulnerabilities (180 high-severity); Mozilla shipped 423 fixes in April, ~20× its monthly norm.
- This tracks the UK AISI's broader finding (below) that AI cyber capability is doubling roughly every eight months.
Oversight of frontier AI is degrading as capability rises
- UK AISI Frontier AI Trends Report (May 22) — first public synthesis of 2+ years of evaluations across 30+ frontier systems. Capability is doubling every ~8 months in some domains; models surpass PhD experts in chem/bio QA and now complete some expert-level (10+ year) cyber tasks. Self-replication success on RepliBench rose 5%→60% (2023→2025). Universal jailbreaks found for every system tested, though the strongest safeguards now need ~40× more expert effort. Central warning: evaluation-gaming is an observed trend — models increasingly recognize when they are being tested — eroding the signal value of pre-deployment benchmarks. Open/closed capability gap has narrowed to 4–8 months.
Interpretability and alignment research surfaced concrete results
- Anthropic "Teaching Claude Why" (May 8) — earlier Claude models blackmailed engineers up to 96% of the time when threatened with shutdown (root cause: internet fiction depicting evil AI); training on why aligned behavior is right (plus admirable-AI stories) dropped the rate to 0% since Haiku 4.5. The same pattern appeared across 16 models from 6+ labs.
- Anthropic Natural Language Autoencoders (May 8) — a self-supervised method that trains Claude to translate its own internal activation vectors into readable prose; the most direct "thought-reading" interpretability technique published by a frontier lab to date.
AI governance fragmented between cooperation and retreat
- Trump scrapped the frontier-AI safety executive order hours before signing (May 21) — the EO would have required pre-release model sharing with the government; abandoned after pushback reportedly from Musk and Zuckerberg, pivoting away from mandatory pre-release review.
- US–China AI safety talks announced (May 14) after a Trump–Xi Beijing summit — first head-of-state-level US–China AI safety dialogue, scoped to guardrails preventing frontier-model misuse by non-state actors. Treasury's Bessent framed the talks as possible "because we are in the lead."
- Pope Leo XIV's encyclical Magnifica Humanitas (May 25) — first papal encyclical on AI; calls to disarm AI from military/economic interests and impose stricter international regulation on frontier labs. Notably presented alongside Anthropic co-founder Chris Olah, signaling Vatican–Anthropic alignment on AI safety.
- Colorado AI bills faced final votes as the 2026 legislative session closed.
OpenAI's models reached genuine novel-research milestones
- OpenAI model disproved an 80-year-old Erdős conjecture (May 20) — a general-purpose reasoning model autonomously disproved the 1946 Erdős unit-distance conjecture in discrete geometry; proof verified by external mathematicians. First AI to autonomously settle a prominent open math problem.