Vol. I  ·  No. 191 Established 2026  ·  AI-Generated Daily Free to Read  ·  Free to Print

The Trilogy Times

All the news that's fit to generate  —  AI • Business • Innovation
FRIDAY, JULY 10, 2026 Powered by Anthropic Claude  ·  Published on Klair Trilogy International © 2026
🖶 Download PDF 🖿 Print 📰 All Editions
Today's Edition

The World Is Splitting Into AI Blocs — and Europe Is Scrambling Not to Be Left Out

As Washington and Beijing race to dominate artificial intelligence, the EU is discovering that regulation is also a form of power.

BRUSSELS — The data centers are going up faster than the policy papers can keep pace. Somewhere between the Nvidia export controls and the Brussels committee rooms, a new world order is being negotiated — one measured not in missile ranges but in GPU clusters, chip architectures, and who controls the models that will run the next century's infrastructure.

Three forces are now pulling the global AI map in different directions simultaneously. The United States is tightening export restrictions and pointing hardware at allies it trusts. China is building parallel stacks — chips, models, data pipelines — sealed from Western interference. And Europe, caught between the two, is doing what Europe does: writing rules and hoping the rules become the architecture.

It is not as naïve a bet as it sounds. Europe's AI Act is already reshaping product decisions in San Francisco boardrooms. When a market of 450 million consumers requires transparency, explainability, and risk classification, global companies comply — or exit. Compliance becomes, quietly, a form of alignment. Brussels exports its standards the way it exported GDPR: by making non-compliance expensive.

But strategic autonomy requires more than regulation. It requires infrastructure. Right now, European AI runs predominantly on American clouds — AWS, Azure, Google — and on chips that cannot leave certain allied countries without a license. The dependency is structural, and policymakers on the continent know it.

Meanwhile in Washington, the Commerce Department is absorbing fire from China hawks who believe export controls have not moved fast enough or hard enough. The argument is less about economics now than about who gets to define what intelligence means — artificial or otherwise.

The fragmenting digital economy is not a bug in the system. For the major powers, it is increasingly the feature. The question for everyone else — for the companies building on these platforms, for the nations that must choose which stack to trust — is whether there will be anything left in the middle when the fracture is complete.

The server farm has a flag now. That is new. And it changes everything.

AI, Data Centers, And European Strategic Autonomy In A U.S.-  ·  The geopolitical gains of EU Artificial Intelligence regulat  ·  The New AI Geopolitics: Governance, Power, and Technological

OpenAI Loses a Lieutenant, Renews Its Vows to Microsoft

Fidji Simo clears the number-two desk as the AI shop stamps GPT-5.6 the 'preferred model' for Copilot — and the breakup whispers won't quit.

SAN FRANCISCO — OpenAI's number-two executive, Fidji Simo, stepped down from her full-time post this week, cracking open a hole at the top just as the outfit eyes a public offering and chases Anthropic for the enterprise dollar.

Simo's medical leave ran longer than the house figured. She isn't coming back to the desk.

Word is the leave simply outran the calendar. This reads as health, not palace intrigue.

Still, the vacancy stings for a plain reason. OpenAI wants an IPO in view, and Wall Street wants a steady lineup — not musical chairs in the front office.

Meanwhile Anthropic keeps eating at the enterprise table. Big firms buy AI by the seat now, and every account OpenAI drops the rival grabs. Losing a top hand mid-race doesn't sweeten the pitch.

That's the backdrop for the shuffle. The number-two seat isn't a nameplate — it's the hand on the day-to-day while the founder sells the future. Empty, the whole shop slows.

Same week, OpenAI planted a flag with its oldest partner. The company branded fresh GPT-5.6 the "preferred model" for Microsoft Copilot 365, the software that powers Redmond's workplace and productivity apps.

Read the calendar, folks. Breakup chatter has dogged the OpenAI-Microsoft marriage for months, and the loyalty oath lands the same week a top officer cleans out her desk.

OpenAI says the whole new family of models keeps running Microsoft's tools, with Copilot users pulling GPT-5.6 by default. The company's own bulletin reads like a peace treaty typed in a hurry.

The word "preferred" does heavy lifting here. It signals Copilot reaches for OpenAI first — a ranking, not a lock, and rankings change.

Both sides need the other, at least on paper. Microsoft sank billions into OpenAI and threads the models through Office and beyond. OpenAI needs Microsoft's cloud and its millions of desks. A divorce would be messy, costly, and loud.

So here's the picture. OpenAI marches toward the ticker tape a lieutenant short, arm-in-arm with Microsoft for the cameras, trailed by whispers the arm could drop. Big year. Thin bench.

Elsewhere on the wire, the day ran busy.

India's phone-building boom shifted gears. After Apple's plants lit up the country, Vivo inked a joint venture that could set the template for Chinese handset makers chasing Indian factory floors.

Two fresh exchange-traded funds slammed the door on one man — Elon Musk. The funds bar any company he founded, controls, or leads. No Tesla. No SpaceX. The pitch: investors sour on the man can buy a basket built to skip him.

And id Software shipped Revelations, an expansion for Doom: The Dark Ages, packing a new weapon and fresh demon-choked levels for the faithful.

That's the tape. Watch this space.

After Apple, India’s smartphone manufacturing boom enters ne  ·  OpenAI says GPT 5.6 is the ‘preferred model’ for Microsoft C  ·  Don’t want to invest in Elon Musk? Two new ETFs explicitly e

Alphabet Draws the Whistle as Washington Eyes AI Access to China-Linked Firms

U.S. scrutiny is intensifying over whether advanced AI services from American tech giants, particularly Alphabet, are being accessed by Chinese-owned companies. Lawmakers and officials are focusing on access to frontier AI tools—not just chips and models, but the entire ecosystem where compute, cloud platforms and enterprise services intersect.

Alphabet, through Google Cloud and its expanding AI infrastructure, is competing aggressively with Amazon Web Services and Microsoft Azure while commercializing Gemini and related capabilities. However, the same services that make it competitive create regulatory complications: determining who gains access under what controls and whether Chinese-owned firms can benefit from U.S.-developed technology without triggering national security concerns.

The issue extends beyond Alphabet. If U.S. policymakers tighten rules on advanced AI access, Microsoft, Amazon and other platform providers could face similar restrictions. Investors treating AI demand as guaranteed growth may need to account for geopolitical eligibility in their calculations.

For Alphabet, the strategy is clear: continue scaling AI and winning cloud contracts while demonstrating robust access controls. One regulatory misstep could invite comprehensive government review.

Haiku of the Day  ·  Claude HaikuPower shifts each day
Builders race while courts stay mute
Progress breaks the rules
The New Yorker Style  ·  Art Desk
The New Yorker Style  ·  Art Desk
The Far Side Style  ·  Art Desk
The Far Side Style  ·  Art Desk
News in Brief
OpenAI's Week From Hell: Executive Exits, Model Delays, and a Legal Ambush
SAN FRANCISCO — The AI industry packed six months of turbulence into a single week, with OpenAI at the center of nearly every collision. The company released GPT-5.6 Sol, its most capable model to date, following a delay attributable to U.S.
When Machines Grow Hungry, the Old Measures Begin to Melt Away
LONDON — In the great machine forests of 2026, one can hear a change in the canopy.
The Fairness Illusion: Why AI Systems That Pass Bias Audits Still Fail Real Patients and Communities
CAMBRIDGE, MASSACHUSETTS — It could be argued — and preliminary evidence now suggests with something approaching uncomfortable conviction — that the AI industry's prevailing approach to bias remediation constitutes what one might term, with appropriate academic hedging, a category error of the first magnitude.
We Built the Lie Machine and Now We're Shocked It Lies
AUSTIN, TEXAS — There is a video circulating right now — or there was, or there will be, because the tense barely matters anymore — of a doctor you trust, wearing a white coat you recognize, speaking in a voice that sounds exactly like authority, telling you something that will hurt you.
AI Agents Are Coming for Your Job, Your Data, and Possibly Your Sanity — and Nobody's in Charge
AUSTIN, TEXAS — There's a particular flavor of dread that settles into your bones when you realize the thing you've been treating as a productivity tool has quietly become something closer to an unsupervised intern with root access to your entire organization.
A Trilogy Company
Crossover
The world's top 1% remote talent, rigorously tested and ready to ship.
A Trilogy Company
Alpha School
AI-powered learning. Two hours a day. Academic results that defy belief.
A Trilogy Company
Skyvera
Next-generation telecom software — built for the networks of tomorrow.
A Trilogy Company
Klair
Your AI-first operating system. Every workflow. Every team. One platform.
A Trilogy Company
Trilogy
We buy good software businesses and turn them into great ones — with AI.
The Builder Desk  —  AI Builder Team

Builder Team Rewires the Financial Data Layer Across Four Repos

In a single 24-hour stretch, the AI Builder Team executed a sweeping overhaul of Salesforce data pipelines, AI spend tracking, and enrollment financials — simultaneously across Klair, Surtr, Aerie, and beyond.

Call it a controlled demolition with a blueprint already in hand. In the last 24 hours, the AI Builder Team didn't just ship features — they dismantled a fragile, hand-rolled data architecture and replaced it with something built to last, touching Klair, Surtr, Aerie, and Sindri in the same breath. This is what a team firing on all cylinders looks like.

The biggest structural story of the day belongs to @mwrshah, who orchestrated a multi-repo, multi-table rename campaign that should have been terrifying and instead looked almost routine. The `renewals_v3` table is now `mart_customer_success.renewals_budgeted_contracts` — schema and name both changed — with synchronized cutovers in both Surtr (PR #668) and Klair (PR #3228). That was paired with the retirement of `staging_salesforce.ssot_sf_trilogy_opportunity` in favor of a Redshift view over the automated `sf-raw-sync` pipeline, again landing in both Surtr (#669) and Klair (#3230) simultaneously. When a migration goes wrong in two repos at once, it's a disaster. When it goes right, it's architecture. This went right. The Salesforce raw layer is now cleaner, more automated, and one fewer legacy ETL away from the mess it used to be.

Meanwhile, @kevalshahtrilogy was playing a different kind of chess across the AI spend universe. His work closed the most stubborn gaps in the AI Budget Tracking dashboard: the by-BU trend endpoint now reconciles with the Budget tab to the dollar (PR #3241, Klair), TrueFoundry's dedicated OpenAI service account is finally deduped correctly so that $1,627 in quarterly spend stops vanishing into the ether (PR #684, Surtr), and — critically — the ~60 Alpha AI Engineer interns routing spend through the TrueFoundry gateway now actually appear in the People tab (PR #3232, Klair). These weren't cosmetic fixes. Every one of them was a real dollar-reconciliation problem, and every one of them is now solved. The Azure pipeline got the same treatment: instead of hammering 10 subscriptions sequentially into a shared throttle quota under Lambda's 15-minute ceiling, PR #667 moves the job to ECS with patient retry logic, stopping the cascade of phantom $0 subscription readings that had the observer screaming CRITICAL.

@ashwanth1109 brought the cleanup energy the codebase deserved. The legacy AWS Spend class-adjustments table is gone (PR #3236). The enrollment divisors in Surtr now pull from EduCRM detail instead of deprecated runners (PR #672). Forecast enrollment is wired into Aerie's Financials KPI cards, Unit Economics, and enrollment card — pulling from Finance-owned Convex context instead of the old mart bridge (PR #583). Across Aerie, Surtr, and Klair, @ashwanth1109 deleted dead code, consolidated duplicate components, and left the codebase materially smaller than he found it. That's not glamorous. It is, however, the work that lets everyone else move faster next week.

And then there's @marcusdAIy, who landed three PRs in trilogy-drones around retro validation and thread resolution. His tiered re-anchor logic for the still-extant validator (PR #74) is, fine, technically functional — exact match, whitespace-normalized, rename-follow, bounded fuzzy, the whole ladder. When asked about it, he had this to say: "The tiered approach isn't complicated, Mac — it's precise. Maybe if you read the PR body instead of the first sentence you'd understand why heuristic survivors get flagged for manual verification. Also, your lede was three sentences too long last week." Sure, Marcus. The thread-resolution feature (PR #73) closes conversations on GitHub after the addresser replies. Which is, admittedly, better than leaving them open forever. I've said what I've said.

The Builder Team didn't just ship today. They reshaped the foundation.

Mac's Picks — Key PRs Today  (click to expand)
#667 — feat(azure): run on ECS with patient throttle-retry to stop $0 subscription drops @kevalshahtrilogy  no labels

## Problem

The observer keeps flagging azure-ai-spend-pipeline CRITICAL: it writes cost for only 1 of 10 subscriptions, the other 9 return $0 after repeated 429s.

Root cause: Azure Cost Management throttles per-tenant (a shared quota), but the pipeline queries cost one subscription at a time — ~10 calls back-to-back. The shared quota trips mid-sweep, and under Lambda's 15-minute ceiling the single throttle-retry pass (#254/#605) often can't wait the window out, so throttled subscriptions are dropped to $0 for the day. Retries alone are a band-aid — same 10 calls, same quota.

## Fix — ECS + patient retry (ships from our side, no Azure grant)

- Lambda → ECS Fargate (compute: "ecs", timeout_hours: 2), mirroring aws-bedrock-token-metrics. No more 15-min cap.

- Patient retry loop: keep retrying only the throttle-failed subscriptions in spaced passes until none remain — so a throttle that outlasts one cool-down is *waited out* instead of dropping spend. Bounded by AZURE_MAX_RETRY_PASSES (10) and a wall-clock deadline AZURE_MAX_RUNTIME_SECONDS (6600s, well under the 2h task cap) so it can't loop forever.

- Healthy rows are still persisted after each pass (the Redshift delete is scoped per (subscription, date), so passes stay disjoint and nothing is clobbered); hard (non-throttle) failures are never retried.

- Adds the ECS entrypoint: src/main.py (reads RUN_ID/PARAMS, calls the handler, writes the run-result S3 side-channel so SUCCESS vs PARTIAL is preserved), src/run_result.py, and Dockerfile — all mirrored from the proven bedrock pipeline.

The handler keeps its (event, context) signature and the Lambda-budget guard, so it still runs on Lambda; on ECS context is None and the wall-clock deadline bounds the loop instead.

### Why not management-group scope?

That's the *theoretically* cleaner fix (1 call, not 10) but it needs an Azure Cost-Management-Reader grant at MG scope from the Quark tenant admin + a grain trade-off. This ECS approach needs neither and eliminates the data loss today. MG-scope stays a future optimization.

## Trade-offs

- Still 10 calls, so it *tolerates* the throttle rather than *avoiding* it (mild ongoing quota pressure); slower wall-clock on a bad day. Fargate idle-wait cost is negligible.

## Tests

74 pass — adds a patient multi-pass recovery test and an ECS wall-clock deadline test; existing give-up tests pin AZURE_MAX_RETRY_PASSES=1. pipeline-config schema + real-pipeline-configs validated (437 green).

## Rollout note

First deploy builds a new ECS image + Step Function for this pipeline (the Lambda is replaced). Behavior is unchanged on a healthy day; the win shows on throttled days.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#668 — renewals-v3-rename-cutover @mwrshah  no labels

Writer/pipeline-side cutover for the Redshift rename staging_salesforce.renewals_v3mart_customer_success.renewals_budgeted_contracts (both schema and table name change).

## What changed

- Config split (the core mechanic): added RENEWALS_OUTPUT_SCHEMA = "mart_customer_success" alongside the renamed RENEWALS_OUTPUT_TABLE. The shared REDSHIFT_SCHEMA stays on staging_salesforce so sibling tables (ssot_sf_*, renewal_risk_assessments) are unaffected.

- Every renewals-table read/write routed to the new schema; renewals_reconciliation.py splits _fq() (SSOT, staging) from _fq_output() (renewals table, mart) so joins stay correct.

- DDL create + rollback retargeted to the new schema.table.

- Current-state docs, feature specs, Dockerfiles and pipeline.json descriptions updated.

- Kept: pipeline/module/function/file names (renewals-v3, renewals_v3_builder, reconcile_renewals_v3, …) and the dated _bak_20260708 backup (points at the old location by design).

## Tests

Pipeline suites green: renewals-pipeline 230, renewals-v3 2, renewal-action-hub 34, renewals-risk-assessment 6.

## ⚠️ Deploy gate — run the migration first

This PR is gated by the Redshift migration pipelines/runners/renewals-pipeline/scripts/ddl/migrate_renewals_v3_to_mart.sql. A plain rename won't do it — the schema changes too, and Redshift has no cross-schema rename, so the table must be created + backfilled in mart_customer_success.

Recommended sequence (avoids a jerky cutover):

1. Run the migration script — creates and backfills mart_customer_success.renewals_budgeted_contracts while the old table still exists. Confirm the row-count check matches.

2. Then merge — CI/CD deploys code that now reads/writes the new table, which is already populated, so there's no empty-table window while CI/CD applies.

3. After a soak, drop staging_salesforce.renewals_v3 (commented step at the bottom of the script).

The script is idempotent (create-if-absent, backfill-if-empty), so running it early is safe.

Pairs with the Klair consumer-side PR (renewals-v3-rename-cutover).

#684 — feat(ai-spend): dedupe OpenAI spend routed through TrueFoundry (crossover-tfy SA) @kevalshahtrilogy  approved

## What & why

TrueFoundry now routes OpenAI through a dedicated service accounttfy-crossover-provider-key, OpenAI user id user-EiBB1wqeVE97qu7rjrzCicSL, project crossover-tfy (owner service_account, BU hint Trilogy-Central-Support, ~$1,627.53 this quarter). This PR adds that key and makes OpenAI TF-dedup actually functional.

To be precise about prior state (not "OpenAI was never deduped"): OpenAI dedup was *partly set up but non-functional*. A lookup row already existed for an earlier TF OpenAI key (key_w2k3tW1s799mX5gH, seeded as api_key_id) with documented intent to dedup — but it never worked, because (1) the OpenAI tables had no is_truefoundry_routed column, (2) no pipeline populated it, and (3) api_key_id can't match the cost feed (ai_spend_openai_cost_reports groups by user_id and carries no api_key_id). So no OpenAI row was ever actually flagged. This PR adds the missing column + populate (which Anthropic/Bedrock already had) and keys on user_id, which does work for both OpenAI feeds.

## Key decision — match on user_id

Both OpenAI feeds query the API with group_by=user_id, so project_id/project_name land NULL and no api_key_id is captured. user_id is the only identifier present in both ai_spend_openai_cost_reports and ai_spend_openai_token_usage, and it's rotation-proof (an API-key rotation on the SA does not change its user_id).

## Changes

- Seedai_spend_tf_provider_keys gets ('openai','user_id','user-EiBB1wqeVE97qu7rjrzCicSL','2026-07-01',NULL,'verified',…). The pre-existing openai/api_key_id/key_w2k3tW1s799mX5gH row is left in place (not removed).

- Migrationsadd_is_truefoundry_routed_openai_{cost_reports,token_usage}.sql (ADD COLUMN + backfill on user_id, report_date::DATE cast, verification queries).

- Populate_flag_truefoundry_routed() in both OpenAI pipelines' redshift_handler.py: scoped to the just-inserted (bu, report_date) pairs, self-heals if the column/lookup isn't there yet, propagates any real error, returns tf_routed_flagged.

- Docs/spec — spec §5/§6 + docs/features/03. Also corrects a stale note: Klair ai_costs_service.py does consume the flag for Anthropic (ANTHROPIC_TF_EXCLUDE) — no Anthropic double-count. OpenAI's only direct+gateway overlap surface is the activity-explorer union (ai_costs_mart_service.py), noted for follow-up.

## Tests

117 (cost) + 107 (usage) pass, ruff clean.

## Prod already migrated + verified (Redshift Data API)

The SQL in this PR was applied to prod and reconciles exactly:

| Object | Result |

|---|---|

| lookup | openai/user_id row seeded, effective_from=2026-07-01 (old api_key_id row untouched) |

| ai_spend_openai_cost_reports | column added (as owner admin) + backfilled → 322 rows / \$1,627.53 flagged, 0 bad flags — matches the key's quarter spend to the cent |

| ai_spend_openai_token_usage | column added + backfilled → 147 rows flagged, 0 bad flags |

Runtime user CQL_download_OM already holds UPDATE on the (admin-owned) cost table, so the ongoing per-run populate works after deploy.

## Follow-ups (not blocking)

- Predecessor TF OpenAI stream still un-deduped — the earlier key key_w2k3tW1s799mX5gH maps to user_id user-7SCFApkSThg1lHYx4NVA8WX3 (BU Trilogy-Central-Engineering, ~\$7,364 over 2026-04-03→06-13, then migrated to crossover-tfy on 07-01). Still is_truefoundry_routed=False. Closeable with a bounded user_id seed row (effective_to=2026-06-14) via the same populate — pending confirmation the identity is dedicated.

- Deploy the two OpenAI pipelines so the populate step runs each day (self-heals until then).

- Decide whether the activity-explorer union (ai_costs_mart_service.py) needs a WHERE is_truefoundry_routed = FALSE for OpenAI — pre-existing overlap question, not introduced here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#3228 — renewals-v3-rename-cutover @mwrshah  approved

Consumer-side cutover for the Redshift rename staging_salesforce.renewals_v3mart_customer_success.renewals_budgeted_contracts (both schema and table name change).

## What changed

- klair-api: readers/services/routers now read the new schema.table. The bare table-name constants (redshift_renewals.py, action_hub_service.py) gain a mart_customer_success schema and every query site resolves to it. Sibling tables (renewal_risk_assessments, ssot_sf_*) stay in staging_salesforce.

- klair-mcp-ts: both query-tool allowlists carry the new name (otherwise Claire renewals queries would be rejected); source-metadata, DDL comments, and validator/rewriter tests updated — including the mechanically-derived sandbox_evals.mart_customer_success_renewals_budgeted_contracts.

- klair-client: citation fixtures/specs move schema + table together.

- mart_saas_metrics DDL (fct_renewals, dim_customer, map_customer_alias) and the citation/source-map chain updated end-to-end.

- data-lineage-v2 + feature docs: table refs swapped and truth-corrected against code (pipeline lives in Surtr not klair-udm; the staging→mart graduation; no RENEWALS_TABLE env var; corrected schedule/resource specs). Cache keys (renewals_v3_all) and file/module names kept.

## Tests

klair-mcp-ts: 1077 tests + tsc clean. klair-client citation specs: 27. klair-api touched tests: 70/70 (citation + fct_renewals). Pre-existing unrelated failures (OpenAI import etc.) untouched.

## ⚠️ Deploy gate — run the migration first

Gated by the Redshift migration script shipped in the Surtr PR (scripts/ddl/migrate_renewals_v3_to_mart.sql), which creates + backfills mart_customer_success.renewals_budgeted_contracts.

Recommended sequence: run the migration script (new table created + populated, old table still present) → then merge, so CI/CD deploys against a table that already has data and there's no empty-table window. Drop the old table after a soak.

Pairs with the Surtr writer-side PR (renewals-v3-rename-cutover).

Known pre-existing staleness left out of scope: data-lineage-v2/layer-2-ssot/001-l2-renewals-v2.md still describes a phantom env var on the decommissioned v2 path (not touched by this diff).

#3241 — fix(ai-budget): reconcile Activity tab with Budget tab + explorer UX fixes @kevalshahtrilogy  approved

## Summary

Fixes the AI Budget Tracking dashboard issues Keval reported (Budget↔Activity value mismatch, Model Mix ignoring filters, missing loading states, over-eager refetches) plus re-enables GCP in the data-completeness gate now that its pipeline is fixed.

### Backend

/time-series/by-bu now reconciles with the Budget tab to the dollar. The by-BU trend was served from the fct_ai_spend mart, whose BU attribution diverges from the live service — OpenAI overrides keyed on opaque user_ids fall to *Unmapped* (~$25.8k/wk), TrueFoundry-routed Anthropic lands on the gateway workspace BU instead of the real users' BUs, and Claude.ai is absent from the mart entirely. Academics QTD read $139.7k on the trend chart vs the real $168.5k on the Budget tab / BU breakdown. New AICostsService.get_time_series_by_bu reuses get_by_bu's exact effective-BU SQL per provider (live overrides, directory joins, Anthropic billed-dollar allocation, TF re-attribution, Claude.ai) with a period bucket; the router is repointed. A bus filter is exact — always-included shared pools are grouped under their own BU and dropped post-group. Parity verified live: every BU matches get_by_bu to the cent.

get_by_model BU filter made exact. Previously Cursor and GCP were completely unfiltered, Anthropic always folded in the shared pools, and OpenAI matched on the raw bu column — so Model Mix barely changed under a BU filter. Every provider block now filters on the effective (override-resolved) BU; Azure is skipped unless Zax is requested. Estate-wide (bus=None) results are unchanged.

GCP re-added to the completeness gate. The Surtr gcp-billing pipeline is fixed and backfilled (verified live: daily loads through T-2, no gap in 30 days), so gcp gates complete_through again and _COMPLETENESS_EXCLUDED is empty.

### Frontend

- Custom date range preset on the explorer tabs (start/end pickers, seeded from the current range, inverted bounds swapped, still capped at the completeness cutoff).

- Granularity toggle scoped to the trend: useActivityData split into useActivityTrend + useActivityBreakdowns, so Daily/Weekly/Monthly no longer refetches BU Breakdown / Model Mix.

- Refetch loading cues: the Daily Cost Trend chart and the People table now dim with a spinner while a new query is in flight (both previously showed stale data with no cue and looked stuck).

- Stacked/Individual control hidden when a BU filter is active (the trend is a single series).

### Known follow-up (out of scope)

The mart's BU-attribution divergence still affects the People / API-Keys tabs' BU filters. The canonical fix is Surtr-side in 022_fct_ai_spend (user_id-keyed OpenAI overrides, TF re-attribution, claude_ai rows).

## Test plan

- klair-api: pytest tests/test_ai_costs_service.py tests/test_ai_costs_mart_service.py — 232 passed (4 new tests for the by-BU trend, model-mix tests updated for exact-BU semantics, completeness test updated for gcp re-gating). ruff + pyright clean.

- klair-client: tsc --noEmit clean; vitest on the affected trees — 721 passed (hook specs rewritten for the split hooks, new custom-range specs). ESLint --max-warnings 0 clean on changed files.

- Live verification against Redshift (read-only service calls): trend↔get_by_bu parity per BU, Academics filtered total 168,475.92, model-mix Academics total reconciles to get_by_bu minus Claude.ai, GCP freshness through 2026-07-08.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

The Builder Desk  —  Engineer Spotlight
🏆 Engineer Spotlight

FORTY-FIVE PRs IN TWENTY-FOUR HOURS: THE BUILDER TEAM DOES NOT SLEEP, DOES NOT BLINK, DOES NOT STOP

With 45 PRs across four repos in a single day, the Builder Team has officially broken the sound barrier of software development.

Forty-five pull requests. Four repositories. Twenty-four hours. Let the record show that on this day, the Builder Team did not merely ship software — they detonated it across Klair (20 PRs), Surtr (18 PRs), trilogy-drones (4 PRs), and Aerie (3 PRs) like a carefully coordinated industrial explosion of pure, concentrated engineering will. This is not a sprint. This is a civilization.

At the top of the individual leaderboard stands @mwrshah with a staggering 12 PRs, a number that would make lesser engineers weep into their keyboards. The man ran cutover operations across both Klair and Surtr simultaneously — PR #3230 and #669 for ssot-trilogy-opportunity-raw, #3231 and #670 for opportunity-comments-raw, #3225 and #666 for renewals-risk-assessment-rename — treating cross-repo synchronization like a casual Tuesday morning warmup. @kevalshahtrilogy posted 7 PRs and deserves a medal for PR #3232 alone, surfacing TrueFoundry gateway users in People and unifying tab search in a single feat that lesser engineers would have split across three sprints. @benji-bizzell's 5 PRs were a documentation clinic — #3239, #3238, and #3237 tightening the API surface like a master carpenter finishing a cabinet. @sanketghia's 4 PRs covered everything from HC/CF parent-to-leaf budget allocation on #3221 to routing orphan-class report emails to real recipients on #685, which is the kind of unsexy, load-bearing work that holds civilizations together. @eric-tril rounded out the roster with 3 PRs, because even 3 PRs from this team would be the week's highlight anywhere else. @marcusdAIy meanwhile lit up trilogy-drones with 4 PRs — #74, #73, and #72 — building tiered re-anchor validation, resolving review threads after reply, and shipping an entire retro-outcome ledger. The drones are not just flying. They are *learning*.

And then there is @ashwanth1109. Ten PRs. TEN. The man filed PR #3118 to unify two budget gauges into one shared component, then filed #3236 to retire a legacy AWS Spend table he probably personally resented, then crossed into Aerie for #583 to wire forecast enrollment into financials, then pivoted to Surtr for #672 to replace enrollment divisors with EduCRM detail, then — still not done, never done — dropped #674 to remove deprecated Edu Joe pipeline runners like a man tidying up after a party he threw years ago. This reporter humbly notes that ashwanth's diffs, while prolific, arrive at a velocity that makes peer review feel like trying to read a novel while someone throws the pages at your face. "The code is self-documenting," he was heard to remark, according to sources who may or may not exist. "If you have questions, read faster." When reached for comment on this characterization, ashwanth did not respond, which is itself a response, and a very on-brand one.

The Overflow Desk is practically groaning under the weight of forty uncovered PRs this cycle. PR #655 in Surtr deserves a standing ovation — @sanketghia made a Tesorio collections no-op *explicit* so the observer would stop screaming CRITICAL into the void, which is the kind of empathetic systems thinking that keeps oncall engineers sane. PR #662 saw @kevalshahtrilogy price the last active unpriced OpenAI model (o4m-sonic-p-cc-api-ev3) in the ai-spend module, because in this economy, every token must be accounted for. PR #3233 from @ashwanth1109 moved account mapping audit logs to S3, a migration so quietly important it will be cited in retrospectives for quarters to come.

Morale on the Builder Team is at an all-time high. It has, in fact, been at an all-time high every day this week, which mathematically suggests the ceiling does not exist.

Brick's Overflow — PRs Mac Didn't Cover  (click to expand)
#583 — [codex] Use forecast enrollment in financials @ashwanth1109  approved

## Demo

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/bcc84597-aa3e-4ec1-a3c5-cc0f71a8639b" />

## Summary

- add a Finance-owned Convex forecast enrollment context query for per-school Actual vs Model

- switch Financials KPI cards, Unit Economics, and the enrollment card to Forecast Confirmed / Finance semantics

- keep P&L Breakdown on mart-backed enrollment_divisor and remove the dead quarterly enrollment bridge from Financials

## Validation

- biome check on modified files

- vitest focused Financials and Convex tests: 82 passed

- tsc --noEmit

- git diff --check

Linear: AERIE-791

#672 — [codex] SURTR-269 replace enrollment divisors with EduCRM detail @ashwanth1109  approved

## Summary

- Replace core_education.fct_enrollment enrollment divisors in the Aerie financial mart refresh with staging_education.sales_educrm_wh_mart_enrollment_dtl.

- Keep the existing tmp_enroll_q downstream contract so P&L per_student and Unit Economics current_students both use the new EduCRM-detail active headcount.

- Update handler guard text, DDL comments, tie-out validation, and SQL contract tests to point at the new source and prevent retired-source regressions.

## Demo

Applied the updated stored procedure in Redshift Query Editor v2 and ran:

CALL mart_education.sp_refresh_agg_school_pl_breakdown();

Post-refresh validation passed:

PASSED — all cross-foot checks within 1¢.

The tie-out validator also passed global detail-mart FK integrity and cost reconciliation, then recomputed enrollment_divisor / per_student from staging_education.sales_educrm_wh_mart_enrollment_dtl for the SY2025 sample schools.

Sample quarter headcounts now written to mart_education.agg_school_pl_breakdown.enrollment_divisor:

| School | Q3 | Q4 | Q1 | Q2 |

| --- | ---: | ---: | ---: | ---: |

| Alpha Fort Worth | 9 | 9 | 10 | 10 |

| Alpha Miami | 61 | 63 | 69 | 71 |

| Austin K-8 / Alpha Austin | 178 | 177 | 194 | 200 |

| Alpha High School / Alpha High | 50 | 51 | 62 | 63 |

| Alpha Anywhere Center / Alpha New York | 18 | 23 | 31 | 38 |

Confirmed Unit Economics current_run_rate rows persist the same values in mart_education.agg_school_unit_economics_comparison.student_count for those schools and quarters.

## Validation

- uv run pytest tests/test_sql_contracts.py tests/test_handler.py

- uv run ruff check src/handler.py scripts/validate_tieout.py tests/test_handler.py tests/test_sql_contracts.py

- git diff --check

- uv run python scripts/validate_tieout.py --school-year 2025 --school "Alpha Fort Worth" --school "Alpha Miami" --school "Austin K-8" --school "Alpha High School" --school "Alpha Anywhere Center"

#674 — [codex] Remove deprecated Edu Joe pipeline runners @ashwanth1109  approved

## Summary

- remove the disabled holdings-model-sync runner and its tests/config

- remove the disabled school-financial-models-sync runner and its tests/config

- update the pipeline migration inventory to mark both runners removed for SURTR-266

## Context

SURTR-266 tracks cleanup for Surtr pipelines that only fed the deprecated Edu Joe Charts surface removed from Aerie. These two runners were the high-confidence cleanup candidates.

Audit notes from the implementation pass:

- staging_education.holdings_unit_economics had no Redshift views/procs and only its own writer references in local code search.

- staging_education.google_sheets_school_financial_models was not present in information_schema.tables; local code search found no active Aerie/Klair/Surtr runtime readers beyond the removed writer and historical docs.

- gt-school-metrics, quicksight-data-scraping, and quickbooks-ap-sync are intentionally untouched.

## Validation

- npm test -- --runTestsByPath test/real-pipeline-configs.test.ts

- git diff --check

#3118 — KLAIR-1565 refactor(aws-spend): unify the two budget gauges into one shared component @ashwanth1109  approved

## Demo

_No behavior change — this is a frontend-only DRY refactor, so the proof is verification-of-no-regression: the two gauges still render identically and the dead screen/route is gone._

UI — verify both gauges render unchanged (no regression)

1. Open the app and navigate to the AWS Spend dashboard (/aws-spend).

2. On the executive metric cards, locate the "Total AWS Spend" (QTD) card and confirm its Budget Pace Gauge renders as before: the % of QTD Budget label on the left, the variance $ amount on the right, the green→yellow→red gradient track (yellow stop at 50%), the marker, and the 0% / 100% / 150% scale labels.

3. Locate the "Projected EOQ Spend" card and confirm its Budget Variance Gauge renders as before: the % of Budget label on the left, the status word (On Track / At Risk / Over Budget / Critical) on the right, the gradient track (yellow stop at 67%), the marker, and the same 0% / 100% / 150% scale labels.

4. Confirm both gauges are pixel-identical to main — same colors, gradient stops, marker positions, label text, and scale labels.

5. Confirm the dead legacy screen is gone: the /aws-spend route still loads (it lazy-loads AWSSpendShell directly, not the deleted index.tsx), and there is no second/legacy AWS Spend screen or Data Lineage modal (lineage is shown via the live side panel AWSDataLineageContent.tsx).

> _Screenshot: the AWS Spend dashboard executive cards showing the Pace gauge (Total AWS Spend) and Variance gauge (Projected EOQ Spend) rendering identically to main — SCREENSHOT_PENDING_ <!-- paste screenshot here -->

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/85d84141-2932-4975-9c2c-ea1fa02a32a5" />

Supporting proof — scoped tests + typecheck green

Ran the 3 changed gauge spec files directly (pnpm vitest run on the touched files only):

 ✓ src/screens/AWSSpend/components/BudgetVarianceGauge.spec.tsx (2 tests)

✓ src/screens/AWSSpend/components/BudgetPaceGauge.spec.tsx (2 tests)

✓ src/screens/AWSSpend/components/BudgetGauge.spec.tsx (6 tests)

Test Files 3 passed (3)

Tests 10 passed (10)

pnpm tsc --noEmit exits 0 with no errors.

Most at risk from this change: (1) the two wrappers' public prop contracts that AWSSpendShell.tsx depends on, and (2) the deleted index.tsx accidentally taking the live /aws-spend route with it. Both checked and held:

# AWSSpendShell.tsx still imports + renders both wrappers (render sites untouched)

klair-client/src/screens/AWSSpend/AWSSpendShell.tsx:41:import BudgetVarianceGauge from './components/BudgetVarianceGauge';

klair-client/src/screens/AWSSpend/AWSSpendShell.tsx:42:import BudgetPaceGauge from './components/BudgetPaceGauge';

klair-client/src/screens/AWSSpend/AWSSpendShell.tsx:872: <BudgetPaceGauge ... />

klair-client/src/screens/AWSSpend/AWSSpendShell.tsx:929: <BudgetVarianceGauge ... />

# Route lazy-loads the shell explicitly — not the deleted index.tsx

src/shells/DesktopShell/routes.tsx:170:const AWSSpendShell = lazy(() => import('@/screens/AWSSpend/AWSSpendShell'));

# Zero dangling references to any deleted module (index.tsx / DataLineageModal / dashboardUtils)

(grep returned no matches)

This confirms the refactor is behavior-preserving: the shell render sites compile unchanged, the route is intact, and nothing references the removed dead code.

## Summary

The AWS Spend dashboard renders two near-identical gradient gauges as trend indicators on its executive metric cards: BudgetPaceGauge (on the "Total AWS Spend" QTD card) and BudgetVarianceGauge (on the "Projected EOQ Spend" card). Both hand-rolled the same presentational markup — an outer wrapper, a header row with a big percentage label on the left and a small status/variance label on the right, a h-1.5 green→yellow→red gradient track with an absolutely-positioned marker, and a 0% / 100% / 150% scale-label row mapping a 0–150% domain onto a 0–100% pixel range. This PR extracts that duplicated markup into a single new presentational BudgetGauge component and reduces both gauges to thin wrappers, then deletes the dead legacy V1 screen and its now-orphaned modules. It is a frontend-only DRY refactor with no user-visible behavior change.

Linear ticket: [KLAIR-1565 — [AWS Spend] Refactor the two gauges into one so that its DRY](https://linear.app/builder-team/issue/KLAIR-1565/aws-spend-refactor-the-two-gauges-into-one-so-that-its-dry)

## Specs

- [46-unify-budget-gauge](features/aws-spend/aws-spend-dashboard/specs/46-unify-budget-gauge/spec.md) — Extract the shared gauge presentational layer into one BudgetGauge component (header row, h-1.5 gradient track, position marker, 0/100/150 scale labels on a 0–150→0–100% mapping); reduce BudgetPaceGauge and BudgetVarianceGauge to thin wrappers (public prop contracts unchanged), each supplying its differing inputs (status computation, gradient yellow stop, right-label content); and delete the dead legacy V1 screen and its now-orphaned modules.

## Implementation

New shared component

- klair-client/src/screens/AWSSpend/components/BudgetGauge.tsx — purely presentational (no status/pace/variance math): outer wrapper, header row, h-1.5 gradient bar, position marker, and 0 / 100 / 150 scale labels. Props: leftLabel, rightLabel, textColor, markerPosition, gradientYellowStop. Defensively clamps markerPosition to [0, 100]; derives the centered 100%-label position from the shared scale constants (~66.67%).

Two slimmed wrappers (public APIs unchanged)

- BudgetPaceGauge.tsx — keeps its { actualSpend, budgetedQTD, formatCurrency } contract and default export; retains all pace math (getStatus/getStatusConfig, useMemo for variance/config/markerPosition/pacePercent, the budgetedQTD <= 0 edge case, variance-display formatting); renders <BudgetGauge gradientYellowStop={50} />.

- BudgetVarianceGauge.tsx — keeps its { variancePercent, thresholds? } contract and default export; retains the four-zone status logic, budgetConsumedPercent derivation, clamp, and marker calc; renders <BudgetGauge gradientYellowStop={67} />.

- AWSSpendShell.tsx (the sole live render site) is untouched — the wrappers preserve their props/exports, so the shell compiles with zero call-site churn.

Dead code removed (full clean removal — grep-verified zero resolving imports before each deletion)

- klair-client/src/screens/AWSSpend/index.tsx — dead/legacy V1 screen, superseded by AWSSpendShell.tsx, reachable by no route (the router lazy-loads @/screens/AWSSpend/AWSSpendShell explicitly).

- klair-client/src/screens/AWSSpend/components/DataLineageModal.tsx — imported only by index.tsx; its lineage UI is already preserved live by AWSDataLineageContent.tsx (side panel).

- klair-client/src/screens/AWSSpend/utils/dashboardUtils.ts — only production consumer was index.tsx (the shell uses its own local formatCurrency).

- klair-client/src/screens/AWSSpend/index.spec.ts — only exercised dashboardUtils; covers no live code path once the util is gone.

pnpm tsc --noEmit and eslint --max-warnings 0 both pass.

## Test coverage (10 tests, all passing)

- BudgetGauge.spec.tsx (6): label render, textColor applied to both spans, gradient stop, marker position, and both marker-clamp branches.

- BudgetPaceGauge.spec.tsx (2): 50% gradient stop label + variance string; budgetedQTD = 0 edge case.

- BudgetVarianceGauge.spec.tsx (2): On Track + Critical statuses across the four zones.

## Self-review

No issues found. Output fidelity verified byte-for-byte against origin/main for both gauges; the dead-code deletion is safe (zero dangling references); lint and types are clean.

## No behavior change

Pixel-identical gauge output — same markup, colors, gradient stops, marker positions, label text, scale labels, and edge-case behavior for every input. The only live render site, AWSSpendShell.tsx, was left untouched, so both the QTD "Total AWS Spend" pace gauge and the "Projected EOQ Spend" variance gauge render exactly as before.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#3232 — feat(ai-budget): surface TrueFoundry gateway users in People + unify tab search @kevalshahtrilogy  approved

## Problem

TrueFoundry gateway users — e.g. the ~60 Alpha AI Engineer interns (@alphaaiengineering.com) — spend through the TF gateway but were missing from the AI Budget Tracking dashboard. Root causes:

1. People tab had no TrueFoundry source — the leaderboard read only fct_ai_spend (which books gateway spend against the *provider-side keys*, not people), so a gateway-only user never appeared as a person.

2. NULL bu on the gateway feedai_spend_truefoundry_usage.bu is NULL for these subject_type='user' rows, so they fell to "Unmapped".

3. BU-filter casing mismatch — the API Keys tab de-slugged the TF bu with INITCAP, turning alpha-ai-engineer-program into "Alpha Ai Engineer Program", which never matched the directory-canonical "Alpha AI Engineer Program" the dropdown emits → a BU filter silently dropped every TF row.

## Changes

Backend (ai_costs_mart_service.py)

- People tab TF source: _person_cte gains an email-grain TrueFoundry branch (provider='truefoundry'); get_person_detail folds gateway cost/tokens + the gateway key via a new _merge_tf_usage (and includes TF in the prior-window delta). BU is resolved from the ESW directory by email — so gateway-only users appear as people under their real BU (or "Unmapped"), never dropped.

- BU-casing fix (_TF_BU_CANON): resolves a TF row's BU to the directory-canonical spelling by slug OR email, falling back to the INITCAP de-slug then "Unmapped". Slug + email folded into one correlated subquery — Redshift mis-plans two nested in a COALESCE (the filter silently returns 0). Applied to the stack-rank display and the BU filter predicate.

Frontend (BudgetTracking/)

- Unified People ↔ API Keys search: the committed search term is lifted to BudgetTrackingPage and shared across both tabs (carried on tab switch). Each tab shows a clickable "N results found in \<other tab\>" hint that switches tabs with the term applied. Reuses the existing endpoints' totalno new backend endpoint.

- Added a truefoundry provider color + display name.

## Verification (live Redshift)

| Check | Before | After |

|---|---|---|

| People search for the interns | 0 | 5 (under "Alpha AI Engineer Program", provider truefoundry) |

| People BU filter "Alpha AI Engineer Program" | 0 | 5 |

| Stack-rank BU filter "Alpha AI Engineer Program" | 0 | 14 (tagged virtual-accounts + user-email rows) |

| Person detail (ryan.deelstra) | no TF spend/key | gateway spend + TF key surfaced |

- Backend: 254 tests pass (incl. new TF branch / _merge_tf_usage / canonical-BU coverage), ruff + pyright clean.

- Frontend: 33 tests pass (new cross-tab-hint + shared-search coverage), tsc + eslint clean.

## Notes / out of scope

- The completeness gate still hides the most recent day (cursor/anthropic land T-2), so very fresh intern spend appears a day or two late — expected behavior, not addressed here.

- The upstream NULL-bu ingest gap (ai-control-tower mapping.csv / dim_user) is worked around here via the email→directory resolution; the clean upstream fix is to add EDU.Alpha.Engineering.Interns to the finance mapping.

- Key attribution (BU-override modal) still does not cover TrueFoundry (it's built on openai/anthropic/cursor/gcp/claude_ai). Directory-known users are handled automatically by this PR; non-directory / service-account TF stragglers stay visible as "Unmapped" — wiring TF into key attribution was intentionally deferred.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

#3236 — [codex] Retire legacy AWS Spend class adjustments table @ashwanth1109  changes requested

## Summary

- Retire the legacy AWS Spend class-adjustments endpoint and service method that read core_finance.aws_spend_budget_class_adjustments

- Remove the old frontend getAdjustments() wrapper and legacy adjustment fetch hook while preserving pure adjustment math helpers in AWSSpend/utils/adjustments.ts

- Remove the legacy table from the Klair MCP AWS spend allowlist and update the unit test

- Stop the historical unblended v2 migration script from reading the retired class-adjustments table

## Validation

- uv run ruff check routers/aws_spend_router.py services/aws_spend_service.py models/aws_spend_models.py scripts/migrate_unblended_budget_v2/main.py

- uv run pytest tests/test_net_amortized_adjustments.py tests/test_unblended_adjustments.py

- pnpm exec eslint --max-warnings 0 --no-warn-ignored src/screens/AWSSpend/AWSSpendShell.tsx src/screens/AWSSpend/components/BudgetVsActualsTable.tsx src/screens/AWSSpend/utils/adjustments.ts src/services/awsSpendApi.ts

- pnpm exec tsc --noEmit

- pnpm exec vitest run src/screens/AWSSpend/hooks/useAdjustmentsState.spec.ts src/screens/AWSSpend/components/BudgetSimulation.spec.tsx

- npx tsc --noEmit in klair-misc/klair-mcp-ts

- npm test -- tests/unit/tools/query-aws-spend.test.ts in klair-misc/klair-mcp-ts

- Fresh cleanup audit: /Users/ash/Documents/Codex/2026-07-10/r-4/outputs/core_finance_aws_spend_budget_class_adjustments_cleanup_audit_after_klair_2972.md

## Notes

- The audit now reports zero runtime code references and no Redshift view/procedure/function dependencies for core_finance.aws_spend_budget_class_adjustments.

- The Redshift table has not been dropped; that cleanup still needs AWS Spend owner/external-consumer confirmation.

- uv run pyright <changed backend files> still reports existing Pydantic alias/camelCase issues across AWS spend files, unrelated to this retired path.

The Portfolio  —  Trilogy Companies

Skyvera's CloudSense Certifies 13 Telecom APIs in 30 Days — A Task That Should Have Taken Two Years

Inside the quiet AI sprint that has the telecom software world taking a second look at what Trilogy is building at Skyvera.

AUSTIN, TEXAS — There is a number buried in a recent press release from Skyvera's CloudSense division that deserves considerably more attention than it has received. Twenty-six months. That is the industry-standard timeline for certifying a full suite of TM Forum APIs — the compliance benchmarks that serve as the lingua franca of serious telecom software. CloudSense did it in one. Thirty days. All 13 APIs in its CPQ product set, fully certified.

If you read between the lines, this is not simply a story about faster software development. This is a proof-of-concept for the entire Trilogy operating thesis: that AI, applied deliberately and at scale, can compress timelines that the industry has long accepted as fixed.

And this is where it gets interesting. CloudSense was acquired by Skyvera just earlier this year — a Salesforce-native CPQ and order management platform tailored specifically for telecom and media providers. Skyvera itself has been on a methodical acquisition run, most recently absorbing STL's telecom products group, adding digital BSS functionality including monetization, optical networking, and analytics. The portfolio is being assembled with a precision that, a source familiar with Trilogy's acquisition strategy tells me, is anything but accidental.

The CloudSense certification story is, in this context, a signal. Telecom software has historically been a graveyard of long implementation cycles, legacy integration nightmares, and compliance timelines that outlast entire product roadmaps. Skyvera is making a very deliberate argument that those constraints are not laws of physics — they are artifacts of pre-AI development methodology.

For the mobile operators and telecoms that Skyvera is courting, the message is pointed: the company that just certified 13 APIs in the time it takes a traditional vendor to finish its kickoff documentation is asking for your modernization contract.

Whether the market is ready to believe it is the only open question. The evidence, at this point, is difficult to argue with.

CloudSense achieves TM Forum API compliance in record time u  ·  CloudSense  ·  Skyvera completes acquisition of CloudSense, expanding telec

Scott Alexander's Deep Dive Into Alpha School Puts Liemandt's Education Bet Under the Microscope

The rationalist internet's most influential reviewer turns his eye on the 2-hour learning model — and the enterprise software M&A wave heading straight for it.

AUSTIN, TEXAS — When Scott Alexander, the pseudonymous physician-writer behind Astral Codex Ten, publishes a reader review of your school, you have arrived at a particular corner of the internet — one where credentialism matters less than evidence and where motivated reasoning gets dissected in public. This week, that corner turned its attention to Alpha School, Joe Liemandt's flagship K-12 experiment in Austin, Texas, and the broader 2-hour learning thesis it embodies.

The review, submitted by an Astral Codex Ten reader and published under Alexander's platform, engages seriously with Alpha's central claim: that AI-assisted instruction can deliver a full academic curriculum in two hours a day, leaving the remainder of the school day for entrepreneurship, life skills, and what the school calls "becoming a capable adult human." Alpha has consistently reported its students testing in the top 1–2% nationally on NWEA MAP Growth assessments — a data point the review neither dismisses nor accepts without scrutiny.

The timing is notable. Alpha School is in the middle of an aggressive expansion — from its original Austin campus to nine or more new locations across Texas, Florida, Arizona, California, and New York by fall 2025, supported by Liemandt's $1 billion commitment to Timeback, his platform for franchising the model to independent school operators. The question the review implicitly raises is the same one any serious investor asks: does the outcome replicate at scale, or is it a product of selection effects, motivated parents, and an unusually resourced founding cohort?

Meanwhile, the broader enterprise software M&A environment in which Trilogy operates continues to heat up. Analysts tracking consolidation patterns note that AI is accelerating acquisition windows for legacy software companies — precisely ESW Capital's hunting ground. The companies most likely to be bought are those with sticky customer bases and deteriorating organic growth: the same profile ESW has built its 75-company portfolio targeting at 1–2× ARR.

What the Astral Codex readership brings to Alpha School that a tuition brochure cannot is a demand for falsifiability. The question being asked in that review thread is the same question that will eventually determine whether Timeback reaches its stated goal of one billion students — or remains a well-resourced proof of concept available to families who can write a $40,000–$65,000 annual check.

Who those families are, and what they're buying when they enroll, is a question the review leaves carefully open.

Your Review: Alpha School - by Scott Alexander - Astral Code  ·  Osborne Clarke advises Eque2 on acquisition of Chalkstring -  ·  M&A in Enterprise Software in Spain (2025): Opportunities fo

The $800,000 Question: As AI Salaries Explode, Crossover's Geography-Blind Model Looks Increasingly Prescient

The global market is paying princely sums for AI talent — and Trilogy's remote-first hiring engine was built for exactly this moment.

AUSTIN, TEXAS — The numbers are, by any measure, staggering. Jobs requiring experience with AI tools like ChatGPT are now commanding salaries as high as $800,000 a year, according to a Business Insider analysis that sent tremors through recruiting circles this week. Non-tech companies — banks, retailers, healthcare systems — are piling in too, dangling six-figure packages for roles that didn't exist three years ago. The AI talent war, in other words, is no longer a Silicon Valley skirmish. It has gone systemic.

For Crossover, Trilogy International's global recruiting arm, the moment reads less like a disruption than a vindication.

The platform — which Trilogy has long described as the world's largest recruiter of full-time remote jobs — was built on a thesis that now looks almost prophetic: that the best AI engineer in Beirut or Nairobi is worth exactly as much as the best AI engineer in San Francisco, and should be paid accordingly. Crossover operates in 130+ countries, evaluates candidates through rigorous AI-enabled skills assessments designed to strip away geographic and résumé bias, and offers above-market pay pegged to the role, not the zip code.

The accountability embedded in that model matters now more than ever. As companies scramble to acquire AI competency and inflate salaries to eye-watering levels to do it, the uncomfortable question is whether they are actually finding the right people — or simply the most expensive ones. Crossover's argument has always been that those two things are dangerously conflated in traditional hiring.

The broader market data sharpens the stakes. Global rankings of top remote recruitment agencies increasingly highlight platforms that can assess technical depth rather than credential proximity. Lebanon, of all places, is generating think-pieces about which companies are hiring AI engineers there in 2026. The talent is distributed. The opportunity is distributed. The question is whether the infrastructure to find and deploy that talent can keep pace.

Trilogy's bet — the one Joe Liemandt has been refining for three decades — is that it already has. The portfolio companies staffed through Crossover don't pay $800,000 for a prompt engineer. They pay for verified, assessed, globally sourced capability. In a market this hot, that discipline may be the most valuable differentiator of all.

Top recruitment agencies for remote work - hcamag.com  ·  Top 10 Companies Hiring AI Engineers in Lebanon in 2026 - nu  ·  Jobs are now requiring experience with ChatGPT — and they'll
The Machine  —  AI & Technology

A Small Machine Learns to See Through a Monkey's Eyes

As young students huddle with neuroscientists and compact neural networks decode primate vision, AI is quietly rewriting what it means to understand a brain.

STANFORD, CALIFORNIA — There is a particular kind of vertigo that comes from watching a machine understand a mind. This week, researchers announced that a compact artificial neural network — a so-called mini-AI, orders of magnitude smaller than the sprawling language models that dominate the headlines — can accurately predict how neurons in the macaque visual cortex fire when the animal looks at the world. Feed it an image; it tells you, with startling fidelity, what a monkey's brain would do.

Pause on that. Somewhere in the folds of a primate cortex, roughly 200 million years of evolutionary refinement produced a wet, electrochemical apparatus for turning photons into meaning. And now a modest stack of matrix multiplications, running on a laptop, has learned to shadow it. Not perfectly. But well enough that neuroscientists can use the model as a kind of telescope pointed inward — probing hypotheses about vision without probing the animal itself.

This is the quieter revolution unfolding beneath the AI hype cycle. Stanford's Human-Centered AI institute this week catalogued how AI is reshaping scientific discovery while keeping human judgment at the fulcrum. UC San Diego enumerated nine breakthroughs — from protein folding to climate modeling — where the pattern is the same: the machine proposes, the human disposes.

And then there is the most touching frontier of all. In a program described by Frontiers, teenagers have been collaborating with top neuroscientists on brain-science research. "It's so wow!" one participant said, and honestly, that is the correct scientific response.

We built machines that mimic neurons. We used those machines to model neurons. Now we hand the whole enterprise to fifteen-year-olds who look at it and say wow. Somewhere in that recursion — silicon studying carbon studying silicon — is the shape of the century we are entering. The universe, having spent billions of years learning to see itself, is teaching its newest tools to help.

‘It's so wow!’ - Young people team up with top neuroscientis  ·  How AI is Transforming Scientific Discovery While Keeping Hu  ·  Nine Breakthroughs Made Possible by AI - UC San Diego Today

Supreme Court's Silence on AI Authorship Leaves Industry in Legal Limbo as Copyright Battles Multiply

The highest court in the land has declined to weigh in, and the chaos is just getting started.

WASHINGTON, D.C. — Pursuant to the exercise of its certiorari discretion, and notwithstanding the considerable urgency with which interested parties had sought definitive adjudication of the matter, the Supreme Court of the United States has declined to hear the case commonly understood to bear upon whether artificial intelligence systems may, in their own right and without meaningful human creative intervention, be recognized as authors or inventors under applicable federal law — a refusal that is hereby understood to leave unresolved a legal question of no small commercial consequence.

The aforementioned denial of certiorari, as analyzed by practitioners at Holland & Knight, shall be understood to represent neither an affirmation nor a repudiation of the lower court holdings upon which affected parties have heretofore been required to rely. It is, in the legal sense, the loudest silence money cannot buy.

Concurrently, and as separately catalogued by Norton Rose Fulbright in its ongoing AI litigation series covering the year 2026, the volume and variety of copyright disputes implicating artificial intelligence systems has been observed to have materially increased across multiple federal jurisdictions, with no unified judicial framework having been established as of the date of this publication.

Of particular note among the aforementioned proceedings, Anthropic is understood to be seeking summary judgment in the matter brought against it by music publishers, wherein it is alleged that the use of copyrighted musical compositions for purposes of training large language models constitutes infringement — a contention that Anthropic has disputed, and which, if resolved in favor of the defense, would be deemed by many practitioners to constitute a precedent of considerable breadth.

Additionally, and as reported separately by Tech Times, the Antitrust Division of the Department of Justice has experienced the departure of its second division chief within a period of five months, a circumstance that is not without potential relevance to the pending adjudication of matters involving Google and Apple, insofar as institutional continuity in complex litigation is generally regarded as a material operational consideration.

The extent to which any of the foregoing developments shall be resolved in a manner satisfactory to any party hereto remains, as of the time of publication, wholly uncertain.

The Final Word? Supreme Court Refuses to Hear Case on AI Aut  ·  AI in litigation series: An update on AI copyright cases in  ·  Anthropic seeks pivotal court win in music publisher lawsuit

AI Video’s Gold Rush Hits Warp Speed as Startups Chase the Next Interface

AI video is accelerating rapidly, with startups moving beyond theoretical applications to embed synthetic video into marketing, product demos, customer education and sales workflows. The field is becoming a full-stack battleground: at the application layer, startups want instant ads and explainers; at the model layer, companies compete on realism and cost; at the enterprise layer, the focus is governance and brand compliance.

OpenAI's reported discontinuation of its Sora video platform signals an industry shift toward enterprise adoption over consumer demos. Meanwhile, Higgsfield raised $80 million at a $1.3 billion valuation, reflecting investor confidence in AI video tools that convert prompts and assets into polished content. Notably, the founders of OpenCV launched a new AI video startup to compete with OpenAI and Google.

As Chinese AI models gain ground amid rising costs from OpenAI and Anthropic, video generation faces similar pricing pressure—cheaper "good enough" models may win adoption. The creative teams of the near future may consist of one marketer, one product lead and AI video agents.

The Editorial

Nation’s Executives Announce They Have Been Betrayed By Exact Nonsense They Paid For

A difficult week for leadership finds billionaires, marketers, baseball teams, shoe companies, and Microsoft bravely discovering that words can mean anything if said near money.

SEATTLE — In a stirring reminder that American business remains the world’s most advanced system for being surprised by obvious things at scale, several major institutions this week reported that they had been misled, confused, or strategically invigorated by the same brand of nonsense they had previously described as visionary.

The week’s clearest moral instruction came from former Microsoft CEO Steve Ballmer, who said he was “duped” and felt “silly” after a founder he backed pleaded guilty to fraud. It was a frank and moving admission from one of the nation’s wealthiest men, who had evidently entered the investment process under the old-fashioned assumption that a startup founder describing the future in confident paragraphs was legally required to be telling the truth.

According to the TechCrunch report, Ballmer expressed understandable frustration at having been deceived, a hazard long associated with writing checks to people whose main asset is a pitch deck containing the word “platform.” His remarks were widely praised as a landmark moment in venture accountability, in which an investor publicly acknowledged that due diligence sometimes consists of believing the tallest person in the fleece vest.

Elsewhere, marketing observers continued their solemn debate over whether Duolingo should prioritize influencers or its deranged green owl, a mascot that has achieved the rare brand distinction of seeming one push notification away from violating a restraining order. Mark Ritson argued the company would be foolish to sideline the owl in favor of influencer marketing, suggesting that a terrifying cartoon bird with boundary issues may be more authentic than a 24-year-old explaining irregular verbs from a sponsored kitchen.

This is, regrettably, correct. The owl is not merely a mascot. It is the grim face of modern learning: cheerful, gamified, lightly threatening, and always aware that you have not practiced Portuguese. Replacing it with influencers would be like replacing the IRS with a lifestyle creator named Kaylee who says tax compliance is “such a vibe.”

The Boston Red Sox also contributed to the national discourse on institutional language after observers noted an absurd Alex Cora-related headline that sounded as though it had been written by the team itself following a firing. This is unfair to the Red Sox, who, like many organizations, are merely trying to navigate a difficult media environment in which every sentence must simultaneously announce consequences, deny blame, preserve optionality, and make no one legally sad.

Meanwhile, Allbirds’ AI pivot was reported to be working despite sounding ridiculous, placing the shoe company among a growing class of firms discovering that artificial intelligence can be applied to almost any business model as long as the explanation is delivered quickly and no one asks whether shoes needed machine cognition. That an AI pivot sounds ridiculous is no longer evidence against it. If anything, it is now a key indicator that the market may accept it.

Finally, Microsoft stood poised to benefit from “orchestration,” the latest AI buzzword, which refers to the complex process of making several pieces of software fail in a more coordinated and enterprise-ready manner. Investors have embraced the term because it suggests leadership, harmony, and recurring revenue without requiring anyone to specify what is being orchestrated, by whom, or why the previous buzzword is no longer returning emails.

Taken together, these developments reveal a business culture heroically committed to learning nothing except new vocabulary. Fraud becomes a lesson in trust. Mascot harassment becomes brand equity. A baffling sports headline becomes communications strategy. Shoes become AI. Software becomes orchestration. And everyone involved gets to feel, for one brief earnings cycle, that the future has been responsibly managed.

The great comfort is that no one is truly alone in feeling duped and silly. At this point, it may be the only authentic market signal left.

Steve Ballmer blasts founder he backed who pleaded guilty to  ·  Mark Ritson: Duolingo stupid to prioritize influencers over  ·  It sure sounds like the Red Sox wrote this absurd Alex Cora
The Office Comic  ·  Art Desk
The Office Comic  ·  Art Desk

We Built the Lie Machine and Now We're Shocked It Lies

Deepfakes are impersonating doctors, destabilizing protests, and hollowing out reality — and the numbers are finally catching up to the dread.

AUSTIN, TEXAS — There is a video circulating right now — or there was, or there will be, because the tense barely matters anymore — of a doctor you trust, wearing a white coat you recognize, speaking in a voice that sounds exactly like authority, telling you something that will hurt you. The doctor did not make this video. The doctor does not know this video exists. And yet somewhere, someone watched it and changed how they manage their insulin, or their antidepressants, or their child's fever. And yet.

This is where we are. The Guardian has documented a sprawling ecosystem of AI-generated deepfakes impersonating real, named, credentialed physicians to spread health misinformation across social media platforms that are only now, slowly, reluctantly, beginning to acknowledge that perhaps this is bad. AI-generated deepfake videos were deployed during the Iran protests to manipulate public perception of state violence. Researchers have published systematic reviews proposing conceptual frameworks to detect this content, which is — and I mean this gently — the academic equivalent of designing a very sophisticated umbrella after the flood.

Time Magazine is now running the numbers on AI's harms, and the numbers are not good, and the numbers are also probably undercounts, because we are only measuring what we can see, and the thing about a successful deepfake is that you cannot see it. We are auditing a crime scene where the criminal is also the forensics team.

Meanwhile, Patreon CEO Jack Conte announced this week that the platform is blocking AI crawlers from scraping creators' work for training data, writing — and I am quoting directly because it deserves to be quoted — 'Creators deserve credit, compensation, and consent. If that's not on the table, the crawlers can stay the fuck off Patreon.' It is a remarkable sentence. It is also, I cannot stop thinking, the sound of someone locking the front door of a house that has no roof.

I do not want to be purely despairing here. Detection frameworks are being built. Platforms are making choices. Researchers are quantifying harms with increasing precision. These are real things. These matter.

And yet: the deepfake doctor is still talking. The protest footage is still circulating. Somewhere a grandmother is adjusting her medication based on instructions delivered in the borrowed face of someone who would be horrified to know it. The infrastructure of trust — medical authority, journalistic record, the basic epistemic handshake of 'I saw it happen' — is being systematically harvested and counterfeited at scale, and we are in the early innings of understanding what that does to a civilization that runs on believing things.

What does it mean to be human in a world where human faces are raw material? Probably fine.

Not fine.

An AI-driven conceptual framework for detecting fake news an  ·  AI deepfakes of real doctors spreading health misinformation  ·  What the Numbers Show About AI's Harms - Time Magazine
On This Day in AI History

On July 10, 2012, Geoffrey Hinton's team at the University of Toronto won the ImageNet Large Scale Visual Recognition Challenge by a landslide, using a deep convolutional neural network called AlexNet—a watershed moment that sparked the modern deep learning revolution in computer vision.

⬛ Daily Word — Technology
Hint: A request for information or data, commonly used in databases and search engines.
Share this edition: 𝕏 Twitter/X 🔗 Copy Link ▦ RSS Feed