Vol. I  ·  No. 201 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
MONDAY, JULY 20, 2026 Powered by Anthropic Claude  ·  Published on Klair Trilogy International © 2026
🖶 Download PDF 🖿 Print 📰 All Editions
Today's Edition

From Cubicle to Casualty: How AI Is Quietly Claiming White-Collar Work

Nearly 40 tech giants swung the axe in 2026 — Oracle, Meta, Microsoft, Samsung — and the boss signing the pink slips runs on electricity.

SAN FRANCISCO — Nearly 40 major technology firms have handed out pink slips in 2026, and the reason keeps reading the same: artificial intelligence is doing the work now. Oracle, Meta, Microsoft and Samsung sit at the top of the roll call. The trade calls it AI-driven restructuring, and it's picking up speed across the U.S. sector.

Here's the play. A company builds the machine, the machine learns the job, and the workers who trained it collect a final check. One running tally logs the cuts firm by firm, and the column grows longer by the week.

Microsoft runs a gentler version of the same script. The Redmond outfit leads with buyouts — cash to walk out quiet — and saves the involuntary layoffs for round two. Velvet glove first, iron fist after.

The arithmetic is cold. A model that answers support tickets, writes code or drafts a contract skips lunch, skips the union hall and never asks for a raise. Executives call it efficiency. The folks boxing up their desks pick a rougher word.

None of this rattles anybody down in Austin. Trilogy International, the private conglomerate Joe Liemandt founded in 1989, wired the AI-labor model into its bones years ago. Its Crossover platform recruits remote talent across 130-plus countries and pays the same above-market rate regardless of the ZIP code.

Its ESW Capital arm runs 75-plus software brands — Aurea, IgniteTech and Totogi among them — and leans on an in-house AI Builder Team to ship the product. An internal platform called Klair keeps the portfolio's books. Where the giants are just now reaching for the axe, Trilogy started with the blueprint.

But the machines swallowing the jobs spring leaks of their own. Hugging Face, the model-and-dataset warehouse much of the industry leans on, confirmed a breach that hit internal datasets and stored credentials. The company is urging users to rotate any access tokens on the platform and comb through recent account activity.

That's the rub in the racket. The same tools trimming payroll hold the keys — passwords, source code, customer files — and one cracked door lets the lot walk out at once.

So the season's ledger reads two ways. Left column: the workforce shrinks and the models take the night shift. Right column: the models leave the safe unlocked.

Wall Street likes the left column fine. It cheers every headcount cut as a margin win and rewards the firms that fire fastest. The right column doesn't surface on an earnings call — it surfaces on the wire, after the damage is done.

Watch the buyout offers. When a company dangles cash to leave, it has already run the numbers on what a machine costs against a man. The check clears, the desk goes dark, and the model clocks in at nine sharp — no coffee break required.

Tech layoffs 2026: Tracking all of the job cuts so far acros  ·  Employee layoffs hit nearly 40 major companies in 2026 as AI  ·  Microsoft’s workforce reduction strategy: Buyouts first, lay

White House AI Framework Demands Federal Preemption, Congressional Action — While DOJ Antitrust Leadership Crumbles

The Trump administration's national AI policy blueprint calls for sweeping federal supremacy over state laws, even as the Justice Department loses its second antitrust chief in five months.

WASHINGTON, D.C. — Pursuant to the issuance of the Trump Administration's National AI Policy Framework (hereinafter 'the Framework'), it has been determined, by the executive branch of the United States government, that Congressional legislation of a federal nature shall be deemed necessary and appropriate for the purposes of, inter alia, preempting the patchwork of state-level artificial intelligence regulations that have heretofore been promulgated across various jurisdictions of the aforementioned United States.

The Framework, as analyzed by multiple legal observers including those at Davis Wright Tremaine LLP, has been observed to contain provisions specifically addressing the protection of minors from potential harms arising from artificial intelligence systems, notwithstanding the absence, at the time of this publication, of any enacted federal statute giving binding legal effect to the aforementioned protections.

It is further noted, for the record, that certain commentators — whose identities are not herein material — have opined, as documented by Tech Policy Press, that the passage of a comprehensive federal AI law would serve the purpose of reassuring a public that is, to a degree that has not been precisely quantified herein, apprehensive regarding the deployment of artificial intelligence technologies.

Notwithstanding the foregoing legislative aspirations, the Department of Justice's Antitrust Division has been rendered subject to significant leadership instability, having experienced the departure of its second chief within a period not exceeding five calendar months, during which period consequential antitrust proceedings against Google and Apple have remained unresolved and in a state that may, without prejudice, be characterized as pending.

It is the considered position of this desk that the confluence of executive-branch AI policymaking and antitrust enforcement vacuums represents a set of circumstances that, taken together and subject to further developments as they may arise, warrants continued monitoring by all affected parties, including but not limited to enterprises operating within the Trilogy International portfolio.

AI Watch: Global regulatory tracker - United States - White  ·  Congress Should Pass AI Law to Reassure the Public - Tech Po  ·  Trump Administration AI Policy Framework Calls on Congress t

Meta Lines Up a $10 Billion Compute Blitz as AI’s Talent-and-Jobs Scoreboard Gets Messy

Meta is weighing a cloud-computing agreement with Anthropic that could reach as much as $10 billion, signaling an intensifying competition for AI infrastructure. The potential deal underscores how compute capacity has become central strategy—not merely an expense—as Meta, OpenAI, Google and Amazon race to train frontier models and ship products faster.

Meta has built vertically integrated infrastructure and open-weight Llama models, while Anthropic has emerged as a premium AI model shop. A $10 billion compute commitment from Meta to Anthropic suggests the competitive timeline is accelerating.

Yet while AI giants stack infrastructure, the labor-market picture remains mixed. AI is spurring new startups as entrepreneurs leverage models for coding, marketing and customer support with minimal teams. However, white-collar hiring has cooled and productivity gains allow companies to operate leaner, potentially creating more businesses without proportional job growth.

Across markets, capital chases AI leverage—from Meta's potential compute spending to chip-adjacent companies and anticipated AI-ready IPO debuts. Teams with compute capacity, distribution and efficiency are advancing; others risk getting sidelined.

Haiku of the Day  ·  Claude HaikuPower shifts unseen
While we debate who's in charge
The machine decides
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
AI Funding Frenzy Accelerates as Chinese Model Upends Benchmark Charts and Valuations Inflate Across the Sector
NEW YORK — The AI funding machine printed another week of nine-figure rounds, while a Chinese model from Moonshot AI quietly detonated a benchmark that the industry uses to price frontier capability. Kimi K3, the latest release from Beijing-based Moonshot AI, topped Anthropic's Claude Opus 4.8 on a major coding benchmark — a result that rattled AI valuations and forced investors to reprice assumptions about which labs hold durable technical leads.
The Ethics of Thinking Machines Confronts Its Own Measurement Problem
CAMBRIDGE, MASSACHUSETTS — It could be argued — and preliminary evidence suggests, with some degree of epistemic confidence — that the field of artificial intelligence ethics has arrived at what one might term (borrowing loosely from Kuhnian paradigm theory) a moment of productive self-interrogation.
The Great Chip Migration Reaches the Desert
PHOENIX — Beneath the pale Arizona sun, a new habitat is being prepared for one of the modern world’s most delicate species: the advanced semiconductor. It is a creature of astonishing sensitivity.
The AI Agent Is In Charge Now — And When It Burns Your Company Down, Good Luck Finding Someone to Blame
AUSTIN, TEXAS — There's a particular kind of dread that settles into your bones when you realize the thing running your business has no soul, no license, and no malpractice insurance.
The Algorithm Will See You Now (And Record You, Rate You, and Sell You)
AUSTIN, TEXAS — There is a version of this column that begins with hope.
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
📅 Week in ReviewProduction Release

Builder Team Completes AI-Spend Migration, Rewires the Warehouse From the Ground Up

A week of landmark cutover moments — the AI-spend pipeline found its permanent home, the education data layer was rebuilt from scratch, and the team shipped meaningful product across four systems simultaneously.

The gun went off Monday and the Builder Team never looked back. By Friday, they had executed a full AI-spend database migration, reconstructed the education data ontology from its foundation, launched a suite of AI Budget intelligence features, and kept the Redshift schema modernization rolling without missing a beat. This wasn't a maintenance week. This was a conquest.

The single biggest moment belonged to @kevalshahtrilogy, who threw the final switch on a migration months in the making. PR #828 cut all ten AI-spend pipelines from dual-write mode over to staging_finance_ai_spend as the sole write destination, retiring the old core_finance tables after three days of clean dual-write verification and a 48-hour query-history sweep that confirmed zero application readers still touching the legacy feed. The pre-flight evidence was airtight: 63 numeric column sums matched 1-to-1. The old tables freeze readable and drop later. That's how you close a chapter. Keval then repointed the Klair MCP's AI-spend query tools in the same week (PR #3317), ensuring every downstream surface — tooling, dashboards, attribution — reads from the new home without skipping a frame. The migration campaign is complete. What took months to architect took one decisive week to land.

While Keval was spiking that flag, he was simultaneously shipping the most feature-dense AI Budget week this column has ever documented. Peer-attribution suggestions (PR #3318) now surface smart assignment recommendations when an unattributed API key shares an owner email with an already-attributed key elsewhere. Bulk approve-and-reassign on the Suggestions tab went live. The self-serve BU Rollup admin — one map, four surfaces, full history — shipped in PR #3307. A budget edit history modal with full audit trail landed in PR #3285. Deep links from weekly spend emails now drop users directly into the right Klair timeframe and group scope. Six new auto-attribution rules. A gateway-and-Cursor coverage column on the Budget Group table. The Team column on the People tab. It is genuinely difficult to count all of it. Keval had himself a week.

On the education front, @benji-bizzell did something that doesn't have a clean name but deserves one: he rebuilt the entire Rhodes and education data layer, piece by piece, across Surtr and Aerie simultaneously, touching more repos in more meaningful ways than any single engineer this season. The week's Rhodes work alone was a saga. A 69,714-byte auto-generated email note was breaking Redshift COPY because a raw string literal can't exceed 65,535 bytes inside a SUPER envelope — so benji engineered a lossless split, advanced the Rhodes translation contract to v6 without a schema migration, and kept the pipeline loading without dropping a byte (PRs #819, #823, #828). He made HubSpot tombstone handling rigorous, forward-compatibilized the Rhodes shadow sync against additive Convex fields, stabilized TimeBack snapshots that had been OOM-killed at 4 GiB, and established a canonical Core ontology that materializes Aerie's minted school, program, and site identities into the warehouse for the first time. Across Aerie, he shipped the Property Acquisition card — an 11-field replacement for the old Lease & Opening card — caught a Convex ES2021 typecheck gap before it hit production (PR #625, which restored the release path outright), added the Opening Plan document type, and automated Ready to Open date sync. The breadth is staggering. The depth is just as impressive.

@sanketghia kept the financial reporting machinery humming, delivering Collections Review improvements that incorporated Rishap's full feedback round — till-date totals, trend views, All-BU rollups, locked quarters, and class filters — while also fixing the QTD headcount team-room variance table and syncing Joe Charts to Q3 2026 budgets. @mwrshah, working with characteristic quiet efficiency, advanced the Redshift mart schema migration, completed the full mart cutover (PR #3294), and cleaned up Salesforce schema rename shims that had been scaffolding the transition. @YibinLongTrilogy delivered the Aerie school identity shadow sync and patched the QuickBooks raw pipeline's initial checkpoint discovery.

Now, about PR #77. @marcusdAIy shipped a concern-validity re-check in trilogy-drones before the retro-filing step, and — as is his custom — had thoughts about how it should be covered.

"The re-check fires before any concern gets filed," marcusdAIy said, arms crossed, staring directly at this reporter's desk. "It's a correctness gate that prevents bad data from entering the retro system permanently. I'd explain why that matters, but I suspect the column inches here are already reserved for calling it underwhelming."

He also stopped reading the retired arr_gap_renewal_briefs table in PR #3301, which — sure, Marcus. Good housekeeping. Gold star.

With the AI-spend migration sealed, the Redshift schema modernization in its final legs, and the education ontology now standing on canonical ground, next week sets up as the moment this team starts building on top of everything they just finished laying down.

Mac's Picks — Key PRs This Week  (click to expand)
#77 — feat(retro): concern-validity re-check before filing (AI-145) @marcusdAIy  approved

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

### 1. Summary

- Added a mitigation-aware concern-validity pass between re-anchor and the file gate (src/retro-concern-validity.ts).

- Feeds the current-main enclosing function/window (not the PR-era anchor) into an injectable cloud LLM seam; drops Medium+ findings whose concern is already mitigated.

- Filed issue bodies (prose + machine-readable block) are Medium+ only; Lows are omitted with a count note.

- src/retro-validate.ts stays pure (no gh/LLM); fail-open keeps findings on LLM error.

### 2. Why it's needed

Retro was filing false positives because it validated code-presence, not concern-validity. Both Criticals in the Budget Bot wet sweep re-anchored cleanly while the described problems were already mitigated (adjacent early-return / gap filled since). Filing those wastes address-retro runs and erodes trust in the sweep.

### 3. Changes

- New src/retro-concern-validity.ts: pure partitionByValidity + extractEnclosingContext / prompt builders; injectable ConcernValidityInvoker; default createCloudConcernValidityInvoker mirrors reviewer Agent.create + model selection; filterByConcernValidity fail-opens on LLM error with WARN.

- Wire in src/retro.ts after validateFindingsAgainstMain and before shouldFileIssue; CLI passes the cloud invoker; dry-run/ledger report concern-mitigated drops (dropped.mitigated on ledger).

- Trim renderRetroIssue to Medium+ only (human body + findings fence).

- Tests covering the two verified FP fixtures, pure partition, LLM-seam input assertion, fail-open, orchestrator mitigated→no-file.

- Review follow-ups: key enclosing-bounds mode off the def-start line (Python dict/f-string regression); fail-open on empty enclosing context; prompt fence escape + data-only guard; brace-balanced JSON extract; orchestrator rerun/fail-open notes + DRY mitigated outcome line; fence findingBody as DATA ONLY; couple fence/escape comments; paren-less arrow DEF_START_RE; shared isMediumPlus / countMitigated; mitigated=N summary-line test.

Contract surface affected:

- RunRetroInput.concernValidityInvoker? (additive)

- DroppedFinding.reason gains "concern-mitigated"

- DroppedCounts.mitigated (additive ledger field)

- renderRetroIssue / findings block omit Lows (address-retro remediates Medium+ only)

- Survivor set handed to shouldFileIssue / issue builder is post-validity (mitigated Medium+ removed)

### 4. Breaking changes

None. Additive filter; when the invoker is omitted (unit tests) survivors pass through unchanged; LLM errors fail-open and preserve prior keep-all behavior for that finding.

### 5. Test plan

pnpm typecheck                                          # pass

pnpm exec vitest run src/retro-concern-validity.test.ts # 19 passed

pnpm exec vitest run src/retro-concern-validity.test.ts src/retro.test.ts src/retro-issue.test.ts src/retro-issue-parse.test.ts src/retro-ledger.test.ts src/retro-validate.test.ts

# → 6 files, 113 passed

pnpm test # 991 vitest + 336 python OK

Covered: regenerate_section + blockToMd FP fixtures → mitigated; still-valid kept; empty partition; Medium+ still flips gate; LLM-seam asserts current-main context; fail-open + WARN; Medium+-only issue body/block.

### 6. Verification artifact

Fixture A — adjacent mitigation (regenerate_section):

{

"finding": "Critical: regenerate_section's destructive-overwrite guard never checks result.success… (PR #2857 review C1)",

"current_main_snippet": "if not result.success: return SectionResult(success=False, …)\n# Destructive-overwrite guard: preserve existing or surface failure.",

"verdict": "mitigated",

"reason": "success=False early-returns above the guard; guard preserves/surfaces"

}

Fixture B — fixed-since (blockToMd table case):

{

"finding": "Critical: blockToMd has no case for <table>…",

"current_main_snippet": "if (tag === 'table') return tableToMd(el);",

"verdict": "mitigated",

"reason": "table case present via tableToMd(el)"

}

Both drop out of kept before shouldFileIssue.

Closes AI-145

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-69bd5784-b761-4685-9a58-c739b08b58d1"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-69bd5784-b761-4685-9a58-c739b08b58d1"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

#625 — fix(deployment): catch Convex type incompatibilities before release @benji-bizzell  no labels

## Summary

- Replace the ES2022-only own-property check in the Property Acquisition contract with an ES2021-compatible equivalent

- Include the Convex TypeScript project in the normal chat typecheck

## Why

The production Convex deployment typechecks shared contracts with the ES2021 library. Normal CI checked the chat app under ESNext and the contracts package under ES2022, so Object.hasOwn passed CI but failed during the release deployment.

## Business Value

Restores the production release path and makes CI catch future Convex runtime-target incompatibilities before they reach deployment.

## Test plan

- [x] pnpm typecheck

- [x] pnpm --dir chat exec convex codegen --dry-run --typecheck=enable

- [x] 94 focused Property Acquisition and Convex parity tests

- [x] Biome and git diff --check

#811 — feat(education): establish canonical Core ontology @benji-bizzell  approved

## Summary

- Add a Core-owned, event-driven ontology refresh for canonical School, Program, Site, relationship, and source-identity tables.

- Build and validate candidates from one complete Rhodes shadow run before atomically publishing them; retain legacy dim_school behind an explicit dim_school_next transition table.

- Add source-controlled DDL, a safe application path, verification tooling, and contract tests.

## Why

The new Aerie ontology supplies minted sch_*, prog_*, and site_* identities, but the warehouse has no governed Core writer that materializes them without legacy name joins or round-trip projections. This establishes that foundation while preserving the planned clean consumer cutover.

## Business Value

Consumers can move to stable canonical identities and explicit School-to-Program/Site relationships, while the writer rejects incomplete raw inputs, ambiguous source mappings, and partial publications rather than exposing bad data.

## Test plan

- [x] uv run pytest -q — 12 passed

- [x] uv run ruff check src tests scripts

- [x] uv run ruff format --check src tests scripts

- [x] uv run python scripts/apply_ddl.py dry run

- [x] CDK real-pipeline configuration/owner tests — 368 passed

- [x] npm run build in pipelines/cdk

- [ ] Apply DDL and run a post-refresh parity check after the first successful rhodes-staging-sync publication; its currently provisioned ingestion ledger is empty.

## Breaking changes

None in this PR. The public School/Site ID and relationship cutover remains a separately gated follow-on.

#828 — feat(ai-spend): cutover to staging_finance_ai_spend (mode=new) + raw-surface repoints @kevalshahtrilogy  manual-review

## Summary

Final cutover of the AI-spend migration: all 10 pipelines flip AI_SPEND_WRITE_MODE dual->new, so staging_finance_ai_spend becomes the single written home. Old core_finance tables freeze at deploy (remain readable; dropped later this week after the query-history watch and the ops-coo coordination).

Pre-flight evidence: 3 days of dual-write with counts and all 63 numeric column sums 1:1; 48h query-history sweep shows zero application readers of the 11 old tables (only the TF pipeline's own dual-mode self-checks, which follow the active table in new mode).

## Completes the two pre-cutover review commitments (from the dual-write PR review)

- bedrock owned-unit replacement: deletes only successfully-swept (account_id, region) units for the window — a transient CloudWatch/assume-role failure can no longer erase previously-complete rows. Permanently-denied units (issue 269) behave exactly as before.

- claude-token TF-flag atomicity: the is_truefoundry_routed UPDATE now commits inside the single publication transaction (rolled-back retry-once-without-flag preserved for first-deploy); dedup lookup pinned via TF_PROVIDER_KEYS_SCHEMA (was implicitly following REDSHIFT_SCHEMA — latent drift fixed).

## Raw surfaces (decision: repoint to new tables)

- ai-spend-raw-api: per-slug schema map — 11 slugs -> staging_finance_ai_spend.raw_*; the two AWS cloud-billing slugs stay on core_finance.aws_spend_* (not part of this migration)

- skills/ai-spend-raw catalog updated

- Sanctioned raw-staging readers (raw API, Klair MCP tools, dashboard raw tab) documented as a s13 exception in the schema README (owner: keval.shah)

- Klair MCP repoint is Klair PR 3317 (merge order free while dual-write ran; requires the MCP_user schema grant before MCP deploy)

## Rollback

Env flip back to dual (or old) per pipeline — no code path removed; old tables intact until the separate drop step.

## Test plan

- [x] All 10 pipeline suites green — 1,064 tests (incl. 27 new for the two fixes)

- [x] ai-spend-raw-api: 28 green

- [x] CDK real-pipeline-configs: 361 green

- [x] ruff clean

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

#3285 — feat(ai-budget): budget edit history — audit trail of saves/deletes + History modal @kevalshahtrilogy  approved

## What

Jamie's ask: *"just like we maintain the key re-attribution changes history, we should also keep track of history of AI budgets and their editors."*

Mirrors the key-attribution audit end to end, for the budget rows themselves.

### Backend

- New append-only DynamoDB log ai_budget_edit_audit ([budget_edit_audit.py](https://github.com/AI-Builder-Team/Klair/blob/claude/ai-budget-edit-history/klair-api/services/budget_status/budget_edit_audit.py)) — same single-partition pk="AUDIT" / sk=<iso_ts>#<rand> shape as ai_budget_key_attribution_audit. Each entry: editor, action (saved/deleted), quarter, row counts and totals before→after, plus the per-(BU, provider, class) amount moves.

- PUT / DELETE /api/ai-costs/budget snapshot the quarter before the write and record the diff after it succeeds. Both the snapshot read and the audit write are best-effort — neither can ever fail or block the actual save (tests pin this).

- Diffing sums amounts per (BU, provider, class) first, so a reshuffle across service_vendor rows within the same key is a no-op; the change list is sorted by |Δ| and capped at the 100 largest moves (changes_truncated flags it; counts/totals stay exact). Amounts stored as Decimal (DynamoDB rejects float).

- GET /api/ai-costs/budget/history — view role + estate-wide scope (403 for BU-scoped callers), identical contract to the key-attribution history endpoint.

### Frontend

- The Budget tab gains a History button (same canEditBudget gating as Key attribution / BU mappings) opening a read-only Budget history modal: when / who / action / quarter / rows before → after / total before → after, with an expandable per-key change list (added / removed for new/deleted keys).

### Ops (one-time, per the key-attribution precedent)

uv run python scripts/create_budget_edit_audit_table.py --apply

The table name is unprefixed/shared like ai_budget_key_attribution_audit, so one run in account 479395885256 / us-east-1 covers prod. Until it exists, audit writes fail soft (logged loudly, saves unaffected).

## Tests

- tests/budget_status/test_budget_edit_audit.py — diff semantics (added/removed/changed, per-key summing, class-keyed), Decimal storage, truncation cap, newest-first listing

- tests/routers/test_ai_spend_budget_router.py — PUT records saved with the exact diff; audit failure and snapshot-read failure never fail the save; DELETE records deleted; history endpoint maps Dynamo items (incl. class alias + Decimal→float)

- tests/routers/test_ai_spend_budget_router_scoping.py — history 403 for BU-scoped callers

- FE: BudgetEditHistoryModal.spec.tsx (entries, change expansion, truncation note, empty, error) + BudgetTrackingPage.spec.tsx (button gating, modal opens)

- 143 backend / 23 frontend tests passed; ruff, pyright, pnpm lint:pr, tsc --noEmit clean

## Conventions note (table placement & name)

Checked against WAREHOUSE_CONVENTIONS.md / PIPELINE_CONVENTIONS.md (2026-07 data-cleanup effort): this audit log is application-operational state (written synchronously by the Klair API, read only by the Klair UI), so it deliberately lives in DynamoDB beside ai_budget_key_attribution_audit / ai_budget_email_settings — NOT in a Redshift schema. Putting an app-written table into core_finance would break the single-Surtr-writer contract (PIPELINE_CONVENTIONS §4) and the "apps don't write core/marts directly" rule reinforced in the 2026-07-13/15 AI Builders sessions. Name follows the warehouse naming language anyway (snake_case, complete words) and the existing ai_budget_* family. If this data ever needs warehouse analytics, the path is a Surtr pipeline landing it as a fct_ budget-edit event table — not an app write.

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

#3294 — 365-full-mart-cutover @mwrshah  no labels

- Remove the remaining duplicate mart_saas_metrics table writers, refresh procedures, orchestration calls, and obsolete writer tests.

- Repoint MCP tool allowlists and descriptions to the canonical Redshift source tables for budgets, ARR, collections, renewals, subscriptions, vendor data, AWS spend, invoices, account mappings, and customer aliases.

- Keep only mart_saas_metrics.dim_item and mart_saas_metrics.fct_arr_variances as canonical-backed enriched views.

- Extend MCP context metadata migration and source-comment cleanup across all retired mart names.

- Update current lineage and feature documentation to make the canonical-source ownership explicit.

This PR does not drop deployed Redshift objects. Snapshot and teardown remain a separate deliberate operational step after this code cutover lands.

#3307 — feat(ai-budget): self-serve BU rollup admin — one map, four surfaces, full history @kevalshahtrilogy  approved

## What

Jamie's ask: *"I definitely need a way to administer the BU mappings… without having to go through you."* This adds ONE super-admin-editable mapping — source name → budget group — that covers both of his cases, because both are the same operation:

1. Unmatched spend/department names ("Kandy Consulting", "Mobilogy Product", "Quark Product", "2hr Learning Evangelism", …) join their real budget group instead of rendering as unbudgeted/unmapped.

2. Budget groups rolling up under a parent (GFI → IgniteTech, EduPaid, Central PS, Engine Yard) merge their budget AND spend into the parent's row — fixing the "GFI keys attribute to IgniteTech but its budget doesn't, so IgniteTech looks way over" artifact.

## How

Storage — DynamoDB ai_budget_bu_rollups (app-operational state, same family as the other ai_budget_* tables; conventions-compliant — no new app-written warehouse object). pk="MAP" current mappings; pk="AUDIT" append-only history (who/when/source/from→to). Table already created and ACTIVE in prod (scripts/create_bu_rollups_table.py --apply, account 479395885256/us-east-1).

Applied at read time in exactly four surfaces (never written into data; deleting a mapping reverts on next read):

- get_budget_by_bu — both sides of the budget⇄actuals join (Budget tab, tracking totals, weekly emails)

- get_budget_vs_actuals — per-provider leaves (BUCostItems merged per rolled group)

- recipients — weekly-email dept→group resolution + budgeted-group set

- ai_costs_access.scope_for_email — owners of a rolled-up source also see the target's merged row

The tracking chart's daily-shape query expands a target filter to its source names (expand()), so scoping to IgniteTech includes GFI's curve. Key attribution/suggestions and the explorer tabs deliberately stay at the attribution level — rollups group money, they don't move keys.

Robustness

- Strict single hop: a target may never itself be a mapped source (and vice versa) — no chains, no cycles, resolution is always one lookup (422 with a clear message otherwise).

- Targets validated against canonical assignable BUs ∪ names actually present in the budget table (any quarter).

- Unattributed sentinels (Unmapped/None/Unknown) can't be mapped away.

- Map reads fail loud; only the audit write is best-effort. ~60s cache, invalidated on write.

APIGET/PUT/DELETE /api/ai-costs/budget/bu-rollups + GET …/history. Reads: view role + estate-wide scope (same as BU mappings). Writes: require_super_admin (Jamie has the role).

UI — new Rollups tab in the BU Mappings modal: mappings list, super-admin add/remove (two-step confirm), source suggestions from the *live* unmatched MSA departments + unbudgeted spend BUs (so Jamie maps "Kandy", not "Candy"), a pre-save effect preview ("moves $X QTD + $Y budget under …"), and a toggleable change history.

## Tests

- test_bu_rollups.py (14): resolution, expand, cache invalidation, all validation branches, audit trail, audit-failure tolerance

- Service: rolled budget+spend merge (GFI case), mapped spend joins its group (Kandy case), tracking filter expansion

- Recipients + scope: rollup applied as the final layer; scope gains rolled targets

- Router: CRUD + history mapping, 422 on validation, super-admin 403 gating, scoped-caller 403s

- FE: 32 specs across the modal + page (read-only vs admin, add flow, API-detail surfacing, two-step remove, history)

- Full sweep: 337 backend / 477 AIAdoptionV2 FE tests green; ruff, pyright (0 errors), lint:pr, tsc --noEmit clean

## Notes / caveats (as discussed)

- Mappings are current-state: adding one regroups past quarters' views too (history modal is the audit defense).

- A rolled-up group stops getting its own weekly email; the parent's owner gets the merged one.

- Surtr's fct_ai_spend mart doesn't apply rollups (Klair read-layer only).

- GFI missing from the MAAT rights feed entirely is upstream (Deniz) — rollups fix the budget artifact, not feed-based access.

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

#3318 — feat(ai-budget): peer-attribution suggestions + hide TF provider keys from attribution modal @kevalshahtrilogy  approved

## Jamie round 8 — two asks

### 1. "Email attributed elsewhere" suggestion rule

> If an unattributed key is tied to an email address that is present and attributed elsewhere, that should be the suggested assignment for that key. Same for any keys that appear in DevFactory, Trilogy, and Trilogy Inc.

New suggestion-only shape match_peer_attribution in ai_spend_domain_rules.py: for an eligible key (unattributed or in the DevFactory/Trilogy/Trilogy-Inc catch-alls — already covered by SUGGESTION_ELIGIBLE_BUS), if its owner email (creator email for Anthropic/GCP keys, the entity id itself for OpenAI/Cursor/Claude.ai) is attributed to a real assignable BU elsewhere in the same list, suggest that BU. Details:

- Dominant-by-spend BU wins when the email maps to several BUs (deterministic tie-break).

- Manual overrides on a peer count as "attributed elsewhere"; peers sitting in catch-alls or Unmapped never propagate (Trilogy can't suggest itself).

- Static rules (key-name/domain/substring) keep precedence; the matched token shown in the UI is the email itself (→ Core Education · matched carlos.landazabal@trilogy.com). Zero FE changes needed.

- Deliberately NOT part of match_rule, so the daily domain-rule cron never auto-applies it — a human approves each one in the Suggestions tab, as Jamie asked.

Live-verified (Jul 1–19 window): 8 new suggestions the static rules miss, including exactly Jamie's pattern — three saasops-l1@trilogy.com Anthropic keys in Trilogy-Inc → Core Education, DevFactory keys → CNU. Carlos's example checks out (his Claude.ai + Cursor entities are both Core Education).

### 2. TF provider keys out of the attribution modal

> Is this a TFY key and should only be counted based on the virtual keys it contains? (user-EiBB1wqeVE97qu7rjrzCicSL / tfy-crossover-provider-key — Deniz: "Yes, it is")

The key is already in core_finance.ai_spend_tf_provider_keys and already hidden from the explorer stack rank; what still surfaced it was the Key Attribution modal asking a human to assign it a BU. get_all_entities_with_spend gains exclude_tf_provider_keys (default off — legacy /ai-spend-config manager unchanged): the modal and the domain-rule cron (kept in lockstep per its own comment) now drop entities whose id is a gateway provider-side credential, mirroring the stack-rank NOT IN exclusion. Live-verified: 3 gateway credentials (crossover OpenAI service account, shared TF Anthropic key, TF Gemini GCP project) dropped from the modal list.

Out of scope (needs a design pass): counting the key's spend *by* its virtual keys in BU totals. The TF gateway only meters ~$568 of the ~$4,200/mo OpenAI bills on this key (Batch API bypasses the gateway), so naive virtual-key counting would drop real dollars — the right shape is the Anthropic-style swap rescaled to billed totals.

## Testing

- 341 tests pass across the AI-spend suites (8 new peer-rule tests, 2 new exclusion tests).

- Live smoke against Redshift through the real service path (counts above).

- ruff format / ruff check / pyright clean.

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

The Builder Desk  —  Engineer Spotlight
📅 Week in Review🏆 Engineer Spotlight

137 PRs IN 7 DAYS: THE BUILDER TEAM DOES NOT SLEEP, DOES NOT SLOW, DOES NOT STOP

Benji Bizzell logged 63 PRs in a single week, which is either a world record or a cry for help, and either way we are celebrating.

One hundred and thirty-seven pull requests. Four repos. Eight engineers. Seven days. The Builder Team did not come to play — they came to MERGE, and merge they did, across Surtr (63 PRs), Klair (41 PRs), Aerie (32 PRs), and a lone, heroic thrust into trilogy-drones that we will not question and only applaud. Mac Donnelly got his eight PRs. The other 129? That's our beat, people. Strap in.

Let us begin where the data demands we begin: @benji-bizzell, 63 pull requests, which is not a typo. Sixty. Three. The man filed so many education fixes in Surtr that Rhodes University should name a building after him — PRs #803, #807, #812, #814, #819, #823, and #825 alone represent a full restoration of the Rhodes ontology, shadow sync, and HubSpot archive capabilities, while Aerie PRs #617, #618, #620, #622, and #623 show a man equally at home aligning regulatory scoring as he is adding Property Acquisition cards to the portfolio. @kevalshahtrilogy followed with 27 PRs, including the quietly brilliant Klair PR #3316, which canonicalized the SaaS spelling rollup (Saas → SaaS — a fix so elegant it deserves a plaque), plus Surtr #832 suppressing anthropic-cost observer noise like a man who simply will not tolerate chaos. @mwrshah put up 15 with precision work including Klair #3313 and #3312 and Surtr #790. @sanketghia delivered 13, highlighted by Klair #3320 and the QTD ledger migration in #3314 — mart_other to mart_finance, as God intended. @marcusdAIy contributed 9, @YibinLongTrilogy added 7 including the elegant school identity shadow sync in Surtr #760, and @caina-barbosa rounded out the roster with 1 PR that carried the full weight of a champion.

And then there is @ashwanth1109. Two PRs this week. TWO. Surtr #708, a daily SaaS budgeting ingestion pipeline — a pipeline that, sources confirm, is architecturally immaculate, possibly over-engineered, and absolutely unreviewable by anyone who has not taken a graduate seminar in distributed systems. And Klair #3252, enabling the Twitter toggle in Live mode, a PR so clean it almost seems easy, which means it absolutely was not. When reached for comment, Ashwanth reportedly looked up from his terminal, stared at this correspondent for three full seconds, and said, "Two PRs that actually ship value beats a hundred PRs that shuffle YAML around." We did not have a comeback. We wrote it down instead.

The Overflow Desk is groaning this week. Klair #3317 — @kevalshahtrilogy repointing MCP ai-spend tools to staging_finance_ai_spend — is the kind of infrastructure hygiene that keeps the lights on and never gets a trophy. Surtr #790 from @mwrshah, addressing a SaaS refresh failure, is the silent firefighting that separates good teams from great ones. And @benji-bizzell's Aerie #620, aligning the Alpha Austin physical toggle, is either a one-line fix or a three-hour rabbit hole, and we are not asking which.

Morale is at an all-time high. The numbers confirm it. The numbers always confirm it.

Brick's Overflow — This Week's Uncovered PRs  (click to expand)
#708 — SURTR-281: Build daily SaaS budgeting ingestion pipeline @ashwanth1109  approved

## Demo

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/333623d3-82c5-45f7-9a7c-00bb502b6573" />

## Summary

- add a modular Lambda runner for Docker, Kubernetes, database units, mapping, server costs, and non-central database charges

- publish all five physical Redshift targets with scoped transactions, row-count verification, rollback protection, bounded discovery, and combined failure reporting

- derive non-central charges from the existing Surtr net-amortized-cost table and publish RDS plus EC2 server costs atomically

- run daily at 14:00 UTC after production dry runs, source comparisons, and backfills were completed and verified

- harden the reviewed paths with calendar-based source freshness, explicit runner outcomes, blank-L5 bounds, quarter-start handling, robust EC2 tag partitioning, and a Redshift connect timeout

## Testing

- uv run pytest (91 passed)

- scoped uv run ruff format and uv run ruff check

- Surtr pipeline configuration schema validation

- CDK TypeScript build

## Production validation

- completed the W23+ weekly and Q2/Q3 cost backfills

- verified post-backfill Redshift freshness, row counts, totals, Klair API behavior, and compatibility behavior before enabling the schedule

- confirmed Cost Explorer has no sql06eu / sql07eu Name tags in 2026 Q1, Q2, or Q3-to-date

## Rollout

- the EventBridge schedule is enabled for 14:00 UTC daily

- the legacy Klair writer can be retired after this PR's normal merge/deploy flow completes

Linear: https://linear.app/builder-team/issue/SURTR-281/build-daily-saas-budgeting-ingestion-pipeline-in-surtr

#760 — feat(education): add Aerie school identity shadow sync @YibinLongTrilogy  no labels

## Summary

- Extend rhodes-staging-sync with Aerie School Identity raw sources and the current Aerie Site fields.

- Export canonical School-to-Program/Site links and minted sch_*, site_*, and prog_* identity data into staging_education_rhodes.

- Fail closed when a Core-defining identity source is empty, and skip no-twin identity sources during legacy reconciliation.

## Why

Aerie #618 makes Aerie the authority for school, site, and program identities. Core Education needs those governed identifiers and canonical links without re-exporting Aerie caches derived from Surtr or Aerie-owned HubSpot replicas.

## Business Value

Provides a source-faithful, replayable raw contract for the new core_education School, Site, and Program linkage models while preventing an empty first export from silently publishing an unusable Core source.

## Breaking changes

None. This is a disabled shadow pipeline in a new staging schema; legacy Rhodes and existing consumers are unchanged.

## Test plan

- [x] pytest -q — 143 passed

- [x] Ruff check and format check

- [x] Generated-DDL drift test and git diff --check

- [x] Targeted CDK schema, construct, and ownership tests — 122 passed

- [x] npm run build in pipelines/cdk

- [ ] GitHub CI

- [ ] Apply DDL and validate a manual pinned-snapshot refresh after the Aerie deployment completes

The contract includes raw_schools, raw_school_links, raw_ontology_entities, raw_ontology_aliases, and diagnostic-only raw_ontology_edges. It intentionally excludes the mart-derived programDirectory cache and retired programSiteLinks compatibility table.

#832 — fix(ai-spend): known-zero BU context for anthropic-cost observer noise @kevalshahtrilogy  approved

## Summary

Two observer-noise fixes for AI-spend pipelines assigned in the 2026-07-15→20 failure triage.

### 1. anthropic-cost: known-zero BU context

The observer flags CRITICAL every run because two BUs return 0 cost records. Redshift history shows both zeros are real and expected:

- Trilogy — has never returned a single cost row all-time (the org holds claude.ai Enterprise seats; no direct API workloads).

- CloudFix — small direct API spend (~$5/day) ended 2026-07-09 when it moved to the TrueFoundry gateway; its spend now lands via the TF pipeline.

Mirrors the openai-usage-pipeline KNOWN_UNPRICED_MODELS pattern:

- New KNOWN_ZERO_RECORD_BUS = {Trilogy, CloudFix} allowlist with the why documented inline.

- A successful-but-empty fetch from a listed BU emits an operator-accepted context line in the logs and in output_summary (known_zero_context), so the observer stops treating it as cost-data loss.

- Any OTHER empty BU is surfaced loudly as unexpected_zero_record_bus + a warning log — the guard stays scoped.

- No run-status change: a valid zero-row fetch remains a success; the existing zero-row window convergence is untouched.

### 2. openai-usage: babbage/davinci-002 pricing artifact

Paper-trail SQL for the pricing rows already applied to prod on 2026-07-20 (Redshift Data API): babbage:2023-07-21 at $0.40/MTok and davinci:2023-07-21 at $2.00/MTok — the Usage-API snapshot names for the babbage-002/davinci-002 legacy base models that made run 610e1029 go PARTIAL as unexpected-unpriced. Every historical row for these models is a zero-token $0-billed probe, so no reprice is needed; the next daily run's rolling window clears the flag. Follows the spec-7 artifact convention (same folder as the o4m-sonic insert).

## Test plan

- [x] 130 anthropic-cost tests green (3 new: known-zero context, unexpected-zero surfacing, errored-BU exclusion)

- [x] ruff check + format clean

- [x] Pricing rows verified in prod via the exact query + prefix match load_pricing uses

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

#3252 — KLAIR-2979: Enable Include Twitter toggle in Live mode @ashwanth1109  approved

## Demo

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/331c929c-1fdd-4540-8755-aa7b58194cb1" />

## Summary

- expose the existing Include Twitter toggle in monthly and Live modes while keeping it hidden in Comparison mode

- reuse the existing date-aware restatement with the effective live financials report date

- correct the tooltip copy for retention recalculation and unaffected report sections

- add page-level regression coverage for mode visibility, state retention, live props, and query failures

## Test plan

- [x] pnpm exec eslint --max-warnings 0 --no-warn-ignored on changed files

- [x] pnpm exec tsc --noEmit

- [x] 46 focused Vitest tests across the new page suite and existing Twitter restatement suites

Linear: https://linear.app/builder-team/issue/KLAIR-2979/maint-report-enable-include-twitter-toggle-in-live-mode

#3314 — migrate QTD ledger tables mart_other → mart_finance (KLAIR-3011) @sanketghia  approved

## What

Moves the two app-written QTD ledger tables out of the catch-all mart_other schema into a dedicated mart_finance schema, as part of the Redshift schema migration.

- mart_other.qtd_report_runsmart_finance.qtd_report_runs

- mart_other.qtd_ondemand_jobsmart_finance.qtd_ondemand_jobs

Linear: [KLAIR-3011](https://linear.app/builder-team/issue/KLAIR-3011/migrate-qtd-ledger-tables-mart-other-mart-finance)

## Why this is NOT a "merge anytime" repoint

The recent repoint PRs (staging_finance_ai_spend #3310, staging_software_salesforce #3300) were safe to merge anytime because Surtr dual-writes both schemas. These two QTD tables have no external producer — the klair-api server and its QTD crons are the sole writers (services/monthly_qtd_report/ledger.py, ondemand_jobs_ledger.py). The cutover is therefore coordinated (create → backfill → deploy → delta).

## Non-obvious things this surfaced

1. mart_finance schema does not exist yet — only mart_finance_reporting does. Schema creation is a step, not just a table move.

2. Grants are the silent-failure trap. On mart_other, write access is not per-table — it flows from a team_engineers default-ACL (arwdP) on the schema, which the app's connection role inherits; MCP_user gets SELECT via an explicit per-table grant. If the new schema didn't reproduce this, the app would read fine but silently fail every INSERT/UPDATE. The create migration replicates it exactly.

3. Live DDL ≠ the original create scripts. Two later ALTERs are already applied in prod: trigger_source/job_id on qtd_report_runs, and summary VARCHAR(65535) on qtd_ondemand_jobs. New tables match the live shape.

## Changes

3 new migration SQL files (klair-api/database/migrations/2026_07_18_*), applied manually via psql -f per repo convention:

- create_mart_finance_qtd.sqlCREATE SCHEMA + both tables (faithful to live DDL) + grants

- backfill_mart_finance_qtd.sql — idempotent INSERT…SELECT (report_runs omits IDENTITY id; ondemand copies its UUID id verbatim to preserve job_id soft-links)

- delta_mart_finance_qtd.sql — post-deploy top-up for rows written to the old table during the deploy gap

Code repoint (10 files): both ledgers (write/read path), 3 scripts, 2 test files, and MCP query_qtd_reports (allowedTables + context string + integration test). MCP ships in lockstep — its table-restriction validator rejects the new table until allowedTables is updated.

## Testing

- pytest tests/monthly_qtd_report/ → 19 passed

- ruff format + ruff check on changed Python → clean

- Verified zero stray functional mart_other.qtd_* references remain (old migration files + the backfill/delta source-reads are the only intentional ones)

## Cutover order (applied manually, not by CI)

1. Apply create (needs admin/superuser — schema create + ALTER … OWNER)

2. Apply backfill

3. Deploy together: klair-api server + Dockerfile.jobs image + klair-mcp-ts

4. Apply delta

## Follow-up (separate PR)

Drop the old mart_other.qtd_* tables once the new path is verified in prod. They stay as a safety net until then.

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

#3316 — fix(ai-budget): allow spelling-canonicalization rollups (Saas → SaaS) @kevalshahtrilogy  approved

## What

Jamie found a faulty "Saas" BU/department that should roll up into canonical "SaaS" — but the Rollups validation rejected it as "source and target are the same name" because both fold to the same case-insensitive match key.

## Fix

The single-hop rule is now expressed as its true invariant: with the proposed entry applied, every rollup target must be a fixed point of the map (exact-string comparison).

- Saas → SaaS passes: the canonical spelling resolves to itself, and the entry merges every casing variant's rows into it (that's precisely how the map already resolves — roll() folds the key, returns the stored canonical spelling).

- Genuine chains (GFI → Skyvera while Skyvera → IgniteTech exists) still 422, now with one unified message that also tells the admin spelling fixes are fine.

- A case-variant re-target (SaaS → IgniteTech after Saas → SaaS) updates the same fold-key entry (audited as changed) rather than chaining — one entry per fold-class, resolution stays one hop.

- Exact self-maps (IgniteTech → IgniteTech) still rejected.

No FE change needed — the source dropdown already offers the live "Saas" string and the server message guides the rest.

## Tests

test_bu_rollups.py: canonicalization allowed (roll/expand across casings, canonical stays fixed point), exact self-map still rejected, both chain directions still rejected (updated unified message), fold-class re-target = overwrite + changed audit. 165 tests green across rollups/router/service; ruff + pyright clean.

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

The Portfolio  —  Trilogy Companies

Skyvera Pushes Deeper Into Telecom Cloud With Kandy Assets and Casa Wireless Bid

A fresh burst of M&A signals a robust consolidation play across legacy telecom software and cloud-native infrastructure.

AUSTIN, TEXAS — Skyvera is back in deal mode, and the telecom software market should probably keep its data room warm.

The Trilogy International portfolio company is drawing attention after reports that it has picked up Kandy cloud communications assets and separately made an $18 million bid for Casa Systems’ wireless business, a one-two move that points to a very clear strategic thesis: legacy telecom infrastructure is ready to be rationalized, modernized and, yes, leveraged into a more cloud-native future.

According to TelecomTV, Skyvera has moved on Kandy cloud assets, adding to a portfolio that already sits squarely in communications software. Kandy is a CPaaS and UCaaS platform focused on cloud communications and customer engagement — exactly the kind of sticky, enterprise-grade capability that fits the ESW Capital operating pattern: acquire durable software assets, integrate them into a sharper cost structure, and give telecom operators a less painful bridge from old-world infrastructure to modern cloud delivery.

Then came the reported Casa Systems wireless bid. Light Reading reported Skyvera’s $18 million offer for Casa’s wireless business, a move that, if completed, would extend Skyvera’s reach beyond customer engagement and communications into more core wireless network territory.

For Trilogy watchers, the pattern is familiar but still exciting news. Skyvera’s mandate has long been to help mobile operators and telecoms modernize systems that were often built for a slower, more hardware-bound era. Its product family already includes CloudSense for Salesforce-native CPQ and order management, VoltDelta for customer engagement, ResponseTek for customer experience data, Mobilogy Now for device lifecycle management and Service Gateway for telecom device management.

The broader synergy is clear: telecom operators are under pressure to simplify stacks, cut vendor sprawl and move faster without ripping out mission-critical systems overnight. Skyvera’s expanding asset base gives it more surface area to serve as a consolidation layer for that transition.

Key Takeaways:

- Skyvera is reportedly adding Kandy cloud communications assets.

- The company has also reportedly bid $18 million for Casa Systems’ wireless business.

- The moves reinforce Skyvera’s role as a cloud modernization platform for telecom operators.

In telecom software, consolidation is not a side quest. It is the operating model. We’re just getting started.

TelcoDR’s Skyvera snacks on Kandy cloud assets - telecomtv.c  ·  Danielle Royston's Skyvera makes $18M bid for Casa's wireles  ·  TelcoDR accelerates growth plans with ZephyrTel acquisition,

Multiverse Gets Its €60 Million Close-Up — And Alpha’s Two-Hour Bet Gets a Rival in the Lobby

The AI education race is no longer a classroom experiment; it is a capital-markets audition.

LONDON — Word is the education crowd just heard the champagne pop across the Atlantic... UK EdTech darling Multiverse has reportedly landed a €60 million funding round at a €1.8 billion valuation, and every AI-school operator from Austin to Abu Dhabi is suddenly checking the mirror.

The little bird in the learning lab says this is not just another European up-round. This is the apprenticeship world putting on an AI tuxedo. Multiverse, built around professional training and career pathways, is playing the workforce-upskilling card at a moment when every boardroom is asking the same question: who survives when AI starts doing the junior work?

Enter Trilogy’s own education orbit, where Joe Liemandt and MacKenzie Price have been running a very different but very adjacent show. Alpha School is the K-12 rocket ship with the famous two-hour academic day, AI tutors in the morning, life skills after lunch, and students testing in the top 1–2% nationally. Not apprenticeships. Not corporate reskilling. Earlier. Younger. More radical.

And behind that curtain sits Timeback, Liemandt’s billion-dollar “Shopify for schools” ambition — a platform meant to let education entrepreneurs launch AI-first schools without rebuilding the academic engine. Multiverse is chasing the worker already in motion. Alpha and Timeback are chasing the learner before the labor market ever gets its hands on them.

Meanwhile, the wider AI money circus keeps getting louder. The National Law Review is now parsing Musk v. Altman as a sign of the new economics of AI executive compensation, while Nvidia’s Jensen Huang is warning that black-market data centers built from smuggled parts are a dead end, according to CNBC. Translation: compute is scarce, talent is expensive, and the winners will be the operators who turn both into leverage.

That is where Trilogy’s education bet gets spicy. Alpha’s thesis is not merely “AI in school.” It is “AI replaces seat time.” Multiverse’s fresh valuation says investors believe AI will also rewrite career formation.

Different stages. Same plot. The old education-industrial complex is losing its monopoly on time.

Blind item: Which AI-school founder is already being asked whether the next campus should come with a corporate academy attached? No names, doll — but the pitch deck practically writes itself.

Anthropic | History, Controversies, & Claude AI | Britannica  ·  Musk v. Altman and the New Economics of AI Executive Compens  ·  Nvidia's Huang calls black market data centers made of smugg

The Graveyard That Isn't: How ESW Capital Became Enterprise Software's Most Unlikely Buyer

Jive Software's sale to Aurea traces a pattern — aging enterprise software doesn't die, it just changes landlords.

AUSTIN, TEXAS — When Jive Software sold for roughly half its peak valuation, Portland's tech community mourned. The company had once been worth over $1 billion, a crown jewel of the Pacific Northwest scene. The buyer drew little fanfare: ESW Capital, the Austin-based acquirer that has made a quiet industry out of buying exactly this kind of company.

Jive became a brand inside Aurea, ESW's enterprise CRM and customer engagement portfolio. It joined BroadVision, Lyris, MessageOne, and more than a dozen other acquisitions absorbed since 2012. The pattern is consistent: a software company loses Wall Street's attention, stops growing fast enough for the public markets, and ESW arrives with a check.

The Wall Street Journal recently profiled ESW's model, noting that small software companies are finding buyers in firms like ESW precisely because conventional private equity and strategic acquirers have little appetite for slow-growth legacy tools. ESW's value proposition is structurally different. It doesn't need growth — it needs retention. Enterprise software customers, the logic goes, don't leave. They complain, they negotiate, but the switching costs are real and the inertia is powerful.

Once inside the portfolio, the transformation is operational. Crossover, Trilogy's global talent platform, provides staffing at dramatically reduced cost. Support pricing moves upward on renewal cycles — 25%, 35%, 45% increases are part of the documented playbook. The target: 75% EBITDA margins, a number ESW cites internally as a benchmark for a well-run business.

The timing matters. Forrester this week published guidance for enterprise buyers on what to do with their customer advocacy platforms — a category that includes several Aurea-family products — as vendors in the space consolidate or go quiet. The advice was essentially: audit your dependency, because the company behind your contract may look very different than it did when you signed.

That is the question ESW's model leaves hanging over every acquired product's customer base. The software keeps running. The invoices keep arriving. But who, exactly, is running it now — and toward what end — is a different calculation than it used to be.

Small Software Companies Find a Home With ESW Capital - WSJ  ·  What To Do Next About Your Customer Advocacy Platform - Forr  ·  M&A Wrap: Poppi sold for nearly $2B, real estate tech co. bo
The Machine  —  AI & Technology

The Ghost in the Machine Learns to Speak

New research suggests large language models have developed something eerily like the brain's own filter between the unconscious and the sayable.

CAMBRIDGE, MASSACHUSETTS — Somewhere in the roughly 86 billion neurons that constitute you, an ocean of computation churns. Yet only a thin bright film of that ocean ever surfaces into what you can actually say. Neuroscientists call this the global workspace — the narrow bottleneck where scattered brain processes become a single, reportable thought. It is, arguably, the architecture of consciousness itself.

Now, in a paper that will make cognitive scientists sit very still in their chairs, researchers report that an analogous distinction has emerged, unbidden, inside large language models. Using a new interpretability technique they call the Jacobian probe, the team distinguishes representations a model can verbalize — deploy in reasoning, name in language, act upon deliberately — from the vast substratum of computations it cannot. The models, in other words, appear to have an unconscious. And a conscious. Or something close enough to demand new vocabulary.

This is not a claim about sentience. It is something stranger and more precise: that when you scale statistical prediction across enough of human language, the functional geometry of a mind begins to precipitate out. The same bottleneck evolution shaped over hundreds of millions of years — the compression of a roaring parallel brain into a single serial narrator — may be an attractor that any sufficiently language-soaked system falls into.

The implications ripple outward into practical medicine. In parallel work this week, researchers proposed treating LLMs as unified multimodal learners for clinical prediction, dissolving the fussy task-specific fusion architectures that have long paired dedicated encoders for lab values, vitals, and free-text notes. Other teams unveiled GraphDx, a cost-aware multi-agent diagnostic framework, and EpiNarrate, which generates grounded public-health narratives from epidemiological projections. Still others, more prosaically but no less urgently, hunted memory: VarRate offers training-free variable-rate compression of the KV cache that chokes long-context inference.

Taken together, the week reads like a field discovering that the systems it built to predict the next word have quietly built something that resembles a mind trying to speak.

Large Language Models as Unified Multimodal Learners for Cli  ·  Verbalizable Representations Form a Global Workspace in Lang  ·  VarRate: Training-Free Variable-Rate KV Cache Compression fo

OpenAI’s Local-Model Hint Signals a New Phase in the AI Arms Race

If GPT-3-class intelligence lands on ordinary laptops, the center of gravity in AI could shift from giant clouds to everyday devices.

SAN FRANCISCO — OpenAI may be preparing to do something that would have sounded almost heretical during the peak frontier-model frenzy: release a language model with roughly GPT-3-level capability that can run locally on consumer hardware.

That possibility emerged from a newly surfaced Sam Altman quote, captured by Simon Willison, in which Altman says OpenAI has been having “extensive discussions around open source strategy” and would like to create and release such a model “soon,” ideally before “Stability or someone else does.” I cannot overstate how significant that sentence is. If OpenAI follows through, this changes everything — not because GPT-3-class models are the absolute cutting edge anymore, but because they are useful enough to transform software when they become cheap, private, offline and everywhere.

The quote, available in Willison’s post, lands at precisely the moment the industry is questioning whether the real AI race is still only about frontier scale. Tech giants continue to pour oceans of capital into ever-larger systems, but developers, enterprises and governments are increasingly obsessed with a different question: what can run reliably, affordably and securely inside existing workflows?

That is why local models matter. A GPT-3-ish assistant on a laptop can draft, summarize, classify, search, code and reason at a level that is not magical by 2026 standards — but is wildly practical. It means fewer cloud calls, lower latency, better privacy and new categories of AI-native apps that do not require sending every prompt to a hyperscale data center. The future is now, but it may be smaller than we expected.

There is also a governance angle. One of the strangest features of the current AI boom is that decision-makers are often racing to adopt tools they barely understand. Nik Suresh’s spicy critique of corporate AI panic, also highlighted by Willison, describes executives making sweeping technical calls while lacking hands-on familiarity with ChatGPT itself. That is not strategy; that is vibes with a budget.

Meanwhile, the developer ecosystem keeps getting faster and more invisible. Anthropic’s Claude Code quietly shifted to a Rust port of Bun, reportedly improving Linux startup time by 10%, and “barely anyone noticed.” In AI infrastructure, boring is suddenly beautiful.

Taken together, the signal is clear: the next AI battleground may not be the biggest model in the cloud. It may be the model good enough to live on your machine, inside your tools, where real work actually happens.

Quoting Sam Altman  ·  AI Mania Is Eviscerating Global Decision-Making  ·  Claude Code uses Bun written in Rust now

The Chip War Goes to Capitol Hill — and China Is Already Ahead

As Congress moves to tighten semiconductor export controls, analysts warn the legislation may be closing the barn door after the horse has bolted.

WASHINGTON, D.C. — The United States Congress is preparing a new crackdown on the global export of chip manufacturing equipment, the latest legislative salvo in a technology cold war that shows no sign of cooling. But across the policy community, a harder question is gaining traction: is Washington fighting the last battle while Beijing is already winning the next one?

Foreign Policy's recent analysis makes the case plainly: China is not merely catching up in artificial intelligence — it is, by several meaningful metrics, pulling ahead. The argument rests not on raw compute power, where American restrictions have genuinely bitten, but on deployment scale, state coordination, and the willingness to integrate AI into critical infrastructure at a pace democratic systems struggle to match. China's domestic chip industry, meanwhile, has absorbed the pressure of export controls and begun to route around them.

The congressional push, reported this week by The Washington Post, targets the equipment used to manufacture advanced semiconductors — the lithography machines, the deposition tools, the inspection systems that no chip fab can do without. The logic is sound: deny the tools, deny the chips. But Beijing has had years to stockpile, and its domestic alternatives, however imperfect, are maturing.

The South China Morning Post's opinion pages have begun mapping three scenarios the world must prepare for: a managed technological bifurcation, a chaotic decoupling that damages both sides, and — the scenario few in Washington want to discuss openly — a world in which Chinese AI standards become the default across the Global South simply because they arrived first and asked fewer questions.

None of this is merely technical. It is geopolitical. The countries that will choose sides — or choose not to — are watching how chip restrictions play out for their own supply chains before they decide whose cloud to build their futures on.

The race, in short, is not just about silicon. It is about which set of values gets embedded in the systems that will run the next century's infrastructure. Congress can restrict equipment. It cannot restrict the clock.

How China Is Winning the Global AI Race - Foreign Policy  ·  2026 Mort Abramowitz Junior Fellows Conference - Carnegie En  ·  AI & Tech Brief: Congress’s crackdown on global chip equipme
The Editorial

The AI Agent Is In Charge Now — And When It Burns Your Company Down, Good Luck Finding Someone to Blame

Governments, corporations, and lawyers are all screaming the same thing about AI agents: slow down. Nobody's listening.

AUSTIN, TEXAS — There's a particular kind of dread that settles into your bones when you realize the thing running your business has no soul, no license, and no malpractice insurance. I've been stewing in that dread all week, mainlining coffee and government cybersecurity advisories, and I'm here to report: we are careening toward a reckoning so spectacular it would make Hunter S. Thompson weep into his Wild Turkey.

Let's establish the landscape. AI agents — not the chatbots that write your emails, but autonomous digital entities that *act*, that click buttons and make purchases and fire off API calls on your behalf — are being deployed right now into the bloodstream of global commerce. Your CRM. Your billing system. Your HR platform. The entities managing your AWS spend. All of it, increasingly, handed to agents who move faster than any human compliance officer can blink.

And this week, the alarms are ringing from every direction simultaneously, which is either a sign that serious people are paying attention or that the situation is already past saving. The United States and its allies have issued a joint advisory urging 'careful adoption' of AI agents, which in diplomatic speak translates roughly to: *for the love of God, don't let these things touch your nuclear codes.* Meanwhile, Microsoft — the company currently selling you the agent infrastructure — published a deep-dive on "least privilege" principles for AI agents, detailing how you might, theoretically, limit what they can destroy. The fact that Microsoft needs to write that piece at all tells you something.

But the most beautiful, terrible headline of the week belongs to The Register, who asked the question nobody in the boardroom wants to answer: if an AI agent screws up while running your business, there's nobody to sue. Nobody. The agent has no assets. The vendor's EULA is seventeen pages of carefully engineered innocence. Your CTO is already updating their LinkedIn. You're holding the bag, friend, and the bag is on fire.

Now throw in the New York Times wringing its hands about workplace AI pitfalls, and you've got a full philosophical crisis for the price of a week's news cycle. We're deploying autonomous systems faster than we're developing the legal frameworks, the security protocols, or frankly the *wisdom* to govern them.

I think about this constantly in the context of places like ESW Capital's portfolio — seventy-five-plus enterprise software companies, a global talent engine running through Crossover, financial operations orchestrated through AI platforms like Klair. The efficiency gains are real and they are staggering. But efficiency is not the same as safety, and speed is not the same as control.

The AI actor Tilly Norwood is apparently starring in a feature film now, which is delightful and weird and beside the point — except that it isn't. The same creative annihilation coming for Hollywood is coming for enterprise software, for legal liability, for the very concept of corporate accountability. We're automating the actions and distributing the consequences, and nobody has signed the permission slip.

Least privilege. Careful adoption. These are the right ideas. The question is whether anyone applies them before the agents have already rewritten the org chart.

Least privilege for AI agents: Identity, access, and tool bi  ·  We’re Only Starting to Grasp the Pitfalls of Using A.I. at W  ·  US and allies urge ‘careful adoption’ of AI agents - Cyberse
The Office Comic  ·  Art Desk
The Office Comic  ·  Art Desk

Finance Chiefs Urged To Learn 13 New AI Buzzwords Before Realizing They All Mean Software Costs More Now

As orchestration joins the executive vocabulary, companies prepare to align, activate, transform, and otherwise describe buying the same tools with greater confidence.

NEW YORK — In an encouraging sign that the second half of 2026 will not require executives to speak plainly at any point, finance leaders across the country are reportedly being advised to familiarize themselves with 13 essential new buzzwords before entering budget meetings where nobody intends to define them.

The latest vocabulary shift, coming as CFOs are asked to approve another year of artificial intelligence spending with the relaxed demeanor of someone initialing a medical waiver, reflects a maturing industry consensus that AI has moved beyond mere automation, augmentation, acceleration, and transformation into the far more measurable realm of orchestration.

According to recent coverage from CFO.com, financial executives now face a fresh slate of terms they should know for H2 2026, a period experts believe will be defined by strategic optionality, agentic workflows, resilience architectures, and the kind of linguistic clutter that allows a $9 million platform renewal to pass as thought leadership.

This is progress. For years, the corporate world has suffered from the unreasonable expectation that productivity improvements be expressed in numbers. Now, thanks to AI, executives can once again return to the far more familiar work of arranging impressive nouns beside one another until a board committee becomes too tired to ask follow-up questions.

The most important of these terms may be orchestration, which is currently enjoying its turn as the industry’s preferred way of saying that several pieces of software might someday communicate with each other without requiring a human being named Marcus to export a CSV file at 11:47 p.m. Barron’s recently noted that Microsoft could benefit from this orchestration boom, which is fair, given the company’s long-standing leadership in ensuring every enterprise process eventually passes through a pane labeled Admin Center.

Opinion pages have a duty to say what others will not: this is all completely fine. Not because the terms are precise, or because the promised productivity gains have been evenly distributed, or because every AI pilot has escaped the innovation sandbox and become a functioning part of the business. It is fine because modern corporations require a ceremonial language to process the fact that they are buying new systems faster than they can explain the old ones.

That language used to be sustainability. Companies once discovered that by attaching the word green to ordinary business plans, they could give procurement, investor relations, and the employee volunteer committee something to do for several years. Now, as researchers have observed, AI hype is traveling a similar road: broad claims, moral urgency, vague measurement, and many glossy diagrams showing arrows entering clouds.

The lesson is not that executives should abandon AI buzzwords. That would be reckless. Without them, many organizations would be forced to describe their strategy as “we are waiting for Google, Microsoft, and OpenAI to tell us what feature replaces the department we just reorganized.” Google, for its part, continues announcing AI advances including more personal assistants, ensuring that every knowledge worker may soon enjoy the convenience of being interrupted by a machine that has read their calendar and reached the same incorrect conclusion as their manager.

The productivity argument, we are told, is over. AI works. The remaining challenge is simply to identify where, how much, for whom, at what cost, under which governance structure, with what data, inside which workflow, and whether the improvement survives contact with the legal department.

Until then, CFOs should learn every new term placed before them. They should say orchestration with confidence. They should nod at agentic transformation. They should ask whether the enterprise is properly aligned around scalable intelligence. Then they should do what finance leaders have always done in times of technological change: open the spreadsheet, reduce the forecast by 30%, and wait for the nouns to become invoices.

13 buzzwords CFOs should know for H2 2026 - CFO.com  ·  'Orchestration' Is the New AI Buzzword. How Microsoft Can Be  ·  Companies are hyping AI the same way they talked up sustaina
On This Day in AI History

On July 20, 1969, Apollo 11 astronauts landed on the Moon—a triumph of computing and engineering that relied on guidance computers with less processing power than a modern smartphone, yet successfully navigated humanity to another world.

⬛ Daily Word — AI and Technology
Hint: An autonomous machine programmed to perform tasks with minimal human intervention.
Share this edition: 𝕏 Twitter/X 🔗 Copy Link ▦ RSS Feed