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

China's Kimi K3 Beats Anthropic on Coding, as AI Fundraising Hits Warp Speed

A week of benchmark upsets and billion-dollar rounds exposes how unstable AI competitive rankings—and valuations—have become.

SAN FRANCISCO — The AI industry's pecking order reshuffled again this week. Moonshot AI's Kimi K3 topped Anthropic's Claude Opus 4.8 on a major coding benchmark, a result that immediately sent ripples through AI equity markets. The episode is a reminder that benchmark leadership in this sector has the shelf life of fresh fish: valuable when current, worthless within weeks.

The timing was awkward for Anthropic. It also crystallized a structural tension in AI valuations — companies command enormous multiples on the assumption their models stay competitive, yet the competitive landscape resets every few months as well-funded Chinese labs close gaps that once seemed durable.

Capital, meanwhile, keeps flowing as if none of this uncertainty registers. Bret Taylor's enterprise AI company Sierra raised nearly $1 billion, months after its previous round closed. Israeli AI startup Decart secured $300 million at a $4 billion valuation, backed by Nvidia. LMArena — an AI evaluation platform, notable timing given the week's benchmark drama — raised $150 million at a $1.7 billion valuation. Four deals, roughly $2.45 billion deployed, in a single news cycle.

On the policy front, OpenAI, Google, and Anthropic announced a joint effort to combat AI model theft, a rare show of coordination among competitors. The coalition aims to establish shared protocols against model extraction and intellectual property theft — an acknowledgment that their most valuable assets are increasingly vulnerable to adversarial reverse-engineering.

The coalescence around IP protection is telling. When rivals unite on a legal and technical standard, it typically signals the threat has become material enough to override competitive instincts. For the three companies holding the most valuable proprietary models in the world, that calculus now apparently favors collective defense over going it alone.

For enterprise software buyers evaluating AI vendors — including ESW Capital's portfolio companies assessing which model providers to integrate — the week's turbulence underscores one durable rule: the benchmark leader today is a case study tomorrow.

Kimi K3 tops Claude Opus 4.8 on a major coding benchmark and  ·  AI evaluation startup LMArena raises $150M at $1.7B valuatio  ·  Bret Taylor's Sierra raises nearly $1 billion months after l

The Talent Exodus Behind the Funding Frenzy: Why AI's Best Minds Are Cashing Out and Checking Out

AI startups banked fresh money this week while some of the engineers who built the machines marched against them.

SAN FRANCISCO — Fresh billions chased the artificial-intelligence business this week, even as some of the engineers who built the machines walked off the job to protest them.

Two stories, one town. Lay them side by side and you get the whole racket.

The money moved first. A startup called Glow stepped out of stealth at a $1.2 billion valuation, aimed at a new class of endpoint risk. The danger, Glow says, comes from AI agents and developer tools now running loose inside corporate networks — software that acts on its own and opens doors the old guards never watched.

The venture crowd kept its pen out. Dimension Capital closed an $800 million third fund, 60 percent bigger than the vehicle it raised just 18 months back. The four-year-old firm bets where science meets raw compute, and by the size of the haul, that corner is booming.

Others sold shovels to the miners. Synthesia, known for AI avatars in training videos, rolled out AI Roleplay Sessions. Employees now rehearse tough workplace conversations with digital stand-ins that score the run, hand back feedback, and ship the boss a dashboard proving the training took.

The gossip ran hotter than the deals. A weekend rumor swept AI Twitter tying Anthropic to robotics outfit Physical Intelligence. Anthropic and OpenAI both ran aggressive buying sprees all through 2026, so the chatter found willing ears — though nobody confirmed a word.

Then the other shoe dropped, and it landed on the sidewalk.

Across the Valley, the people who write the code and train the models gathered to march — against the very technology cutting their checks. Their grievance, reported by the Los Angeles Times: the jobs the machines erase and the gamble they take with humanity itself.

Strange sight, that. The builder, remorseful, waving a placard at his own handiwork. The financier, three blocks over, wiring another nine figures into the thing the builder fears.

Both camps read the same tea leaves and drew opposite conclusions. One sees a fortune; the other sees a warning. The market, for now, sides with the fortune.

That is the split screen. On one monitor, valuations climb, funds swell, and avatars coach the sales floor. On the other, the builders carry signs and ask where the road leads.

Nobody rang a bell to settle it. The deals cleared and the march broke up. Monday opens with both crowds back at their desks, building the same future they cannot agree on.

Two camps. One industry. The gap between them widened in a matter of days.

Glow emerges from stealth at $1.2B valuation to challenge en  ·  Synthesia’s AI training platform is moving beyond videos int  ·  The Anthropic-Physical Intelligence rumor roiling AI Twitter

OPENAI TAKES ITS NEXT MODEL DRIVE STRAIGHT INTO WASHINGTON

OpenAI's next-generation frontier models face U.S. government review, with CEO Sam Altman set to brief officials as policymakers develop safety checks for advanced AI systems. The move reflects intense pressure balancing innovation speed, national security concerns and competition with China. U.S. officials are preparing reviews for powerful models as global AI competition intensifies, signaling that future releases may require more than internal benchmarks—including safety testing, national security assessments and capability evaluations. The competitive landscape with China now frames every AI policy discussion in Washington. For the broader industry, including Anthropic, Google DeepMind and Meta, whatever review structure emerges could become the standard rulebook for frontier AI development. The regulatory process introduces a new variable for investors betting on scale: time-to-launch delays. The challenge remains designing a safety review that addresses catastrophic risks without hindering U.S. competitiveness in the global AI race.

Haiku of the Day  ·  Claude HaikuGold rush breeds exodus,
brilliance converts into cash—
progress leaves no stone.
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
The Great Concrete Migration: AI’s Data Centers Outgrow the Builders
MADRID — Across the plains and industrial outskirts of the developed world, a new species is spreading with extraordinary speed: the AI data center, vast, warm-blooded, and insatiably hungry for electricity. Once a relatively quiet corner of the technology habitat, data center construction has now become, by some industry measures, the most capacity-constrained building sector on Earth.
The Academy Rediscovers Its Own Foundations: Reinforcement Learning, Neural Interpolation, and the Slow Return of Rigor to Machine Learning
CAMBRIDGE, MASSACHUSETTS — It could be argued — and indeed, preliminary evidence suggests with increasing insistence — that the machine learning research community is experiencing what one might term (with appropriate epistemological caution) a foundational turn: a collective, if uncoordinated, redirection of scholarly attention toward the theoretical underpinnings that practitioners have, for some considerable period, elected to treat as optional. The thesis is straightforward enough.
The AI Economy Has a Dashboard Problem
AUSTIN, TEXAS — I'll be honest, the most underrated story in tech right now is not that AI can write code, summarize emails, or maybe help crack an 87-year-old math problem, but that every serious organization is being forced to ask the same brutally simple question: does this actually move the business? 🚀 Unpopular opinion: Delta CEO Ed Bastian may have delivered the cleanest AI strategy memo of the week without pretending to be an AI strategist at all. When Bastian says Delta sees the economy before everyone else does, because booking data shows in real time who is flying, where they are going, and what they are willing to pay, he is really describing the holy grail every enterprise AI team claims to want: live signal, tied to revenue, with consequences. That is why his skepticism about AI until it moves the top line matters, and it is worth reading his comments in full at Fast Company, because buried under the airline-industry framing is a masterclass in operator thinking.
Nation’s CEOs Announce AI Productivity Debate Finally Over After Finding Setting That Fires People
NEW YORK — After years of careful study, cautious pilot programs, and several thousand conference panels featuring men in fleece vests saying “workflow,” America’s business leadership has officially declared that the AI productivity argument is over, having determined that the technology is now sufficiently advanced to make workers more productive, or failing that, absent. The conclusion arrived this week amid a cluster of reports suggesting artificial intelligence has entered what analysts are calling the “actually matters” phase, a term used to describe the moment when software stops generating amusing images of the pope in outerwear and begins appearing in quarterly earnings calls as a reason headcount went down. According to Inc.’s bluntly titled dispatch, the AI productivity argument is over, which is helpful news for anyone who had grown weary of debating whether a machine that can summarize 400 Slack messages into one wrong sentence might someday affect office work.
The Antitrust Fever Returns, on Schedule
AUSTIN, TEXAS — The Johns Hopkins Bloomberg Center has convened another of those solemn colloquia to ask whether the United States government should break up big tech, and one is tempted, in the manner of a weary parish priest hearing the same sin confessed for the fortieth time, to sigh and issue the usual penance.
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 Cleans House, Ships Intelligence, and Hardens Everything

From retiring dead endpoints to wiring nine deterministic financial marts, the AI Builder Team spent 24 hours proving that great infrastructure is half demolition, half revelation.

Nobody builds a cathedral without clearing the rubble first. That's the story the AI Builder Team wrote across Klair, Surtr, Aerie, and trilogy-drones in the last 24 hours — a sweeping, cross-repo effort that simultaneously retired the dead weight dragging the data platform down and shipped new capability that opens doors the org didn't have yesterday.

The biggest structural move came from @sanketghia, who executed a trifecta that would humble a lesser engineer. He pulled the plug on the deprecated `/renewals/grouped_by_account` endpoint — 440 days of CloudWatch history verified it was effectively a ghost — while simultaneously registering the new Education BU 'TSA - Lakeway' across six lockstep code locations so the access-control layer wouldn't silently swallow it. Then, in Surtr, he moved `budgeted_arr_snapshots` out of `staging_gsheets` and into `core_finance` where it belongs, enforcing WAREHOUSE_CONVENTIONS §2.3 and tightening the governed boundary that separates staging chaos from production truth. Three PRs. Three repos. One engineer. That's a hat trick.

@mwrshah had his own demolition derby in Klair and Surtr. He repointed the entire unblended AWS-spend budget view chain off a frozen legacy table — stuck at 2026-Q1 — onto the live v2 path, then tore out the cost-movement findings feature entirely because it wrote to two tables that held a combined zero rows. Dead code doesn't get a retirement party here; it gets deleted. He also fixed the CI change-detection bug that had allowed the aws-spend Lambda to drift undetected since April. The deployed function was running March code. It is not anymore.

@YibinLongTrilogy dropped something quietly enormous in Surtr: nine deterministic QuickBooks financial marts, published atomically by a single stored procedure and gated behind a completion manifest so the runner won't touch Redshift until raw-sync's S3 state confirms true readiness — not just a successful checkpoint. That's not just nine new marts. That's a reliability pattern the platform will use again and again. Meanwhile, @benji-bizzell overhauled HubSpot Raw Sync in Surtr — replacing a fragile, portal-wide serial extraction with checkpointed catalogs, bounded shards, and S3-backed Distributed Maps that publish complete resources independently. One resource failure no longer blocks the rest. In Aerie, he also added Daycare and Preschool as canonical Due Diligence phase modes end-to-end — persistence, API, MCP, parsing — closing the blank-field gap that plagued preschool-sized sites since Phase 1.

@ashwanth1109 shipped independent period selection for Snowball Variances in Klair, letting the card default to MTD while Maintenance Summary stays on TTM — a clean UX unlock passed through AppSync all the way to Redshift. And @caina-barbosa quietly saved five days of server-cost pipeline failures in Surtr by aliasing two temporary Oracle restore hostnames that the fail-closed mapping didn't recognize. $206.43 of genuine Q3 spend, recovered.

Now. About trilogy-drones. marcusdAIy merged six — six — PRs into the drones repo today, touching browser-verify screenshot durability, addresser retry logic, aerie-seed fixtures, and Mercy watcher auto-addressing. When reached for comment, he offered the following: 'Six PRs, Mac. Count them. The browser-verify pipeline now produces durable Release assets that non-Cursor reviewers can actually open, the addresser distinguishes errored rounds from no-progress instead of collapsing them into noise, and the seed fixtures unblock every data-dependent Aerie screen in CI. But sure, tell me again how the contributions are underwhelming.'

Six PRs, readers. Six PRs in a single day from a man whose throughput I have never once questioned — only the *weight* of it. I'll let that hang.

Mac's Picks — Key PRs Today  (click to expand)
#869 — feat(hubspot): make raw sync resource-oriented @benji-bizzell  no labels

## Summary

- Replace portal-wide serial extraction with checkpointed catalogs, bounded shards, and S3-backed Distributed Maps

- Publish complete resources independently with pinned compare-and-swap state, pre-run reconciliation, and strict terminal-result accounting

- Harden immutable artifacts, replay ordering, duplicate detection, execution proof, and task IAM boundaries

## Why

HubSpot Raw could exceed both task and workflow limits while one resource failure blocked unrelated complete resources. The adversarial review also found that oversized Step Functions payloads, overlapping runs, a Redshift/S3 publication gap, and best-effort result reporting could undermine otherwise successful fan-out runs. This change makes work bounded, resumable, failure-isolated, and fail-closed while retaining exact lineage and data-integrity checks.

## Business Value

Large HubSpot resources can progress without restarting an entire portal, and a deleted or failed record no longer blocks independently complete resources. Operators receive trustworthy SUCCESS, PARTIAL, or FAILED outcomes, while publication ordering and replay lineage prevent older or ambiguous generations from replacing newer data.

## Breaking changes

The canonical migration must run before the new image. It adds the duplicate-key publication guard alongside the per-resource state and publication procedure introduced by this branch.

## Test plan

- [x] 135 HubSpot Raw runner tests

- [x] 320 full shared Lambda tests

- [x] 408 focused HubSpot config and state-machine tests

- [x] TypeScript build

- [x] Ruff check and format verification

- [x] DDL dry run parsed 104 statements

- [x] Cached diff integrity check

- [x] Full GitHub CI on d66a41d

- [x] Mercy review on d66a41d — no blocking findings

- [ ] Apply the migration before deploying the disabled pipeline

- [ ] Run one explicit portal proof and verify timing, deployed quota wiring, S3 lineage, per-resource state, ledger rows, and exact partial accounting before scheduling or cutover

#878 — chore(aws-spend): redeploy drifted Lambda + fix CI change-detection @mwrshah  no labels

Two commits: (1) force a redeploy of the currently-drifted aws-spend Lambda, and (2) fix the CI change-detection bug that caused the drift so it can't recur.

## 1. Force redeploy of the drifted Lambda (8b065221)

The deployed aws-spend Lambdas (AWS account 479395885256, us-east-1) are running code last modified 2026-03-17 — older than the "Migrate pipeline assets into Surtr repo" commit (2026-04-08) that made this repo the source of truth. The repo code and the running Lambda have drifted.

Adds a one-line redeploy_marker field to pipelines/runners/aws-spend-pipeline/pipeline.json. This tip commit's diff touches ^pipelines/runners/, so deploy-pipelines fires; cdk deploy --all then detects the drifted Lambda asset hash and redeploys the current code. The marker has no runtime effect — PipelineConfigSchema is a non-strict z.object(), so Zod strips the unknown field at synth.

## 2. Fix the CI change-detection bug (8504f802)

Root cause of the drift: cd.yml's detect-changes diffed HEAD~1..HEAD with fetch-depth: 2. On a merge commit that compares the merge against its *first parent* — which shows no pipelines/ changes even when the merged branch touched them. On squashed/batched pushes it only sees the tip commit. So a merged branch's pipeline changes are invisible and deploy-pipelines gets skipped. That's exactly how the 2026-04-08 migration never redeployed.

Fix:

- Diff the full pushed range github.event.before..github.sha instead of HEAD~1..HEAD — covers every commit GitHub just pushed, regardless of merge/squash shape.

- fetch-depth: 20 so the range base (github.event.before) is actually fetched.

- Fail safe rather than silently skip: a new branch (all-zeros before SHA) or a range-diff error both fall back to deploying all targets. A spurious deploy is cheap; a skipped deploy causes exactly this drift. (Both branches verified with a shell harness.)

- workflow_dispatch deploy-all branch and both path globs (^pipelines/(cdk|runners)/, ^(Surtr/|infra/)) unchanged.

## Sequencing note

CD triggers on push to production, so the hardened detection takes effect on the *next* push to production after this lands. The redeploy marker (commit 1) is what actually fires aws-spend's redeploy this time around. Targets main so it rides the next production rolling release.

## Manual fallback

workflow_dispatch on the CD workflow sets pipelines=true/app=true unconditionally — the lever if a targeted redeploy is ever needed.

#879 — feat(quickbooks-mart): add nine deterministic marts with completion-manifest-gated refresh @YibinLongTrilogy  approved

## Summary

Adds nine deterministic QuickBooks financial marts to the existing mart_education

schema, published atomically by a single Redshift stored procedure that a dedicated

Lambda runner invokes. The runner is wired to the platform's existing

triggers.on_pipeline_success subscription to quickbooks-raw-sync, but success alone

is not treated as readiness — raw-sync intentionally reports successful checkpoint

outcomes. Before touching Redshift, the mart runner reads raw-sync's durable S3 state,

requires an idle active state with no pending sync or clean publication, fetches the

exact versioned completion manifest, and verifies its size and SHA-256. Only a complete

backfill or sync manifest is accepted; anything else returns a cheap skipped. The

accepted manifest's identity is pinned into mart lineage, and the procedure rejects any

required raw publication newer than the accepted completion. This is a build-and-

validate PR — legacy QuickBooks tables are untouched and no consumers (Aerie, Klair,

Core) are repointed; consumer cutover is explicitly out of scope.

The nine marts and their sources:

| Mart | Source |

|---|---|

| quickbooks_ap_transactions | raw_bill, raw_vendorcredit |

| quickbooks_bill_payments | raw_billpayment |

| quickbooks_bills | raw_bill |

| quickbooks_deposits | raw_deposit, raw_account |

| quickbooks_expense_transactions | raw_purchase |

| agg_quickbooks_financial_metrics | Same-refresh expense candidate |

| quickbooks_journal_entries | raw_journalentry |

| quickbooks_purchases | raw_purchase |

| quickbooks_vendor_credits | raw_vendorcredit |

Five non-deterministic legacy outputs (quickbooks_expense_reports,

quickbooks_pl_data, quickbooks_pl_monthly, qb_cost_opportunities,

qb_vendor_classifications) are deliberately excluded. All sources are assumed

populated by PR #759 under staging_education_quickbooks.

## Refresh architecture

quickbooks-raw-sync  (Step Function SUCCEEDED, any outcome)

→ EventBridge starts mart-education-quickbooks-refresh via on_pipeline_success

→ runner reads raw-sync durable S3 state

· requires idle active state, no pending sync / clean publication

· fetches exact versioned completion manifest, verifies size + SHA-256

· accepts only a complete backfill / sync manifest, else skipped

· skips a manifest already present in mart lineage (dedupe)

→ Lambda calls one Redshift procedure, pinning the accepted manifest identity

→ all nine marts publish atomically, or the whole refresh rolls back

- The refresh consumes the platform's standard success trigger — **no custom event bus,

no events:PutEvents, no bespoke on_data_ready trigger type.** Readiness is derived

and verified from durable state, not from event payload.

- backfill_progress, sync_progress, and skipped_overlap executions start an

inexpensive run that returns skipped; they cannot refresh marts from a mid-cycle

staging state.

- as_of_date defaults to the manifest's UTC completion date; an operator may override

it for a deliberate recovery run.

- At-least-once EventBridge delivery and manual recovery are safe: exact manifest

identity is recorded and deduplicated, so a manifest publishes at most once.

### Changes

Completion-manifest readiness gate *(new)*

- src/completion_state.py *(new)* — Reads raw-sync's durable S3 state, requires an

idle active state with no pending/checkpointed work, resolves the exact versioned

backfill_manifest / last_incremental_manifest, verifies size and SHA-256 against

the immutable reference, validates schema versions and extraction-id/key agreement,

and returns a verified CompletionManifest or an expected safe skip.

- src/handler.py — Loads the verified completion, short-circuits to skipped when

staging is not ready or the manifest was already consumed, defaults as_of_date to

the manifest completion date, passes the pinned manifest identity into the procedure,

and asserts the committed audit pins that exact manifest and timestamp.

- pipeline.json — Switches the trigger to on_pipeline_success, adds

UPSTREAM_STATE_S3_BUCKET / UPSTREAM_STATE_S3_KEY, and grants read-only

s3:GetObject/s3:GetObjectVersion on the exact state object and the production

quickbooks/manifests/* prefix only.

Stored procedure & lineage

- ddl/sp_refresh_quickbooks_financial_marts.sql — Adds seven completion-manifest

parameters, validates them, dedupes on manifest identity (concurrent duplicate call

returns without changing marts), rejects any required raw ledger publication newer

than the accepted completion timestamp, and writes the pinned manifest into every

audit row. Procedure signature widened accordingly.

- ddl/refresh_run_lineage.sql — Adds the seven NOT NULL completion-lineage

columns to the audit table.

- ddl/migrations/2026-07-21_completion_manifest_lineage.sql *(new)* — Adds the

seven completion-lineage columns (nullable, since historical rows predate pinning).

- ddl/migrations/2026-07-21_remove_unguarded_procedure.sql *(new)* — Drops the

obsolete two-argument procedure, applied only after the guarded signature exists so

there is no callable gap.

Marts, runner, reconciliation *(unchanged foundation of this PR)*

- Nine per-mart DDLs + agg_quickbooks_financial_metrics.sql, the warehouse-owned

naming migration, the Redshift Data API client (src/redshift_client.py) with

deadline-bound cancellation, the read-only legacy reconciliation tooling

(scripts/reconcile_legacy.py, RECONCILIATION.md), and owner registration.

Docs

- README.md — Documents the success-trigger readiness gate, the S3 state /

manifest verification, the skip semantics, and the ordered migration/deploy steps.

### What was removed vs. the initial approach

An earlier iteration of this branch published a bespoke Pipeline Data Ready EventBridge

event and added an on_data_ready CDK trigger type. That was replaced with the

durable-state readiness gate above. This PR therefore reverts all of it, and the net

diff against main contains no CDK changes and no quickbooks-raw-sync changes:

- Removed the on_data_ready trigger type, its EventBridge rules, schema, resource-name

helper, and CDK tests.

- Removed custom event publishing from quickbooks-raw-sync/src/main.py, its

events:PutEvents IAM grant, and its event tests.

### Design Decisions

- Success is not readiness. Because raw-sync legitimately succeeds on checkpoint

outcomes, the mart proves readiness from durable state and a checksum-verified

immutable manifest rather than trusting the trigger. Unready executions cost one cheap

skipped run.

- Manifest identity is the idempotency key. Both the handler and the procedure dedupe

on the exact (bucket, key, version_id, sha256), so at-least-once delivery and manual

replay publish each completion at most once.

- Fail closed on races. The procedure rejects any required raw publication newer than

the accepted completion timestamp, so a delayed trigger cannot publish against a later,

partially-checkpointed extraction.

- Atomic, all-or-nothing publication. All nine marts are replaced in one transaction,

each verified against its candidate before commit; any failure rolls the refresh back.

- Warehouse-owned naming. Columns follow warehouse conventions

(txn_datetransaction_date, doc_numberdocument_number,

credit_flagis_credit, adjustmentis_adjustment, currency

currency_code, qb_created_timequickbooks_created_at, generic IDs →

bill_id/purchase_id/journal_entry_id/…); the aggregate is

agg_quickbooks_financial_metrics. The rename migration preserves existing rows.

### Known exceptions & limitations

- Expense account mappings 140/93 → 63210/63220 are hardcoded rather than governed

through a queryable mapping table.

- The procedure reads staging raw_* JSON because the clean projections do not

preserve every required field.

- Runtime uses the shared CQL_download_OM Redshift identity.

- Surtr deployment does not automatically apply warehouse DDL in a fresh environment;

migrations are applied manually in the documented order.

- Currency handling was intentionally not expanded.

- Consumer cutover is out of scope for this PR.

## Test Plan

- [x] Mart runner tests — 70 passed (readiness gate, manifest size/SHA-256 verification,

skip semantics, handler input/audit validation, Data API timeout cancellation,

reconciliation safety, read-only SQL enforcement, mart SQL contracts, atomic publication)

- [x] quickbooks-raw-sync tests — 83 passed

- [x] CDK tests — 641 passed / 17 suites (count dropped from 648 with on_data_ready

tests removed)

- [x] Ruff lint + format clean; CDK TypeScript build passes

- [x] Net diff against main contains no CDK or quickbooks-raw-sync changes; no

remaining on_data_ready references

- [x] Warehouse naming migration, DDL, guarded procedure, and one atomic refresh applied

to production Redshift; nine marts populated and reconciled with zero unexplained

differences (8 marts accepted expected_snapshot_drift;

quickbooks_expense_transactions accepted non_reconcilable_historical). No tables

dropped.

- [ ] Reviewer: confirm no legacy QuickBooks table or downstream consumer is repointed

#885 — feat(renewals): move budgeted_arr_snapshots from staging_gsheets to core_finance @sanketghia  approved

## Summary

Tables v3 Redshift-cleanup: relocates staging_gsheets.renewals_contract_budgeted_arr_snapshotscore_finance.renewals_contract_budgeted_arr_snapshots (same object name, new schema).

Linear: [SURTR-361](https://linear.app/builder-team/issue/SURTR-361/move-renewals-contract-budgeted-arr-snapshots-from-staging-gsheets-to)

Why move: the writer joins brr (_current_quarter) to core_finance.bu_class_registry and applies a governed BU mapping → violates the staging contract (WAREHOUSE_CONVENTIONS §2.3). It is a periodic-snapshot fact of governed meaning and belongs in core_finance with bu_class_registry and the arr_* family. It is also the sole surviving store of budget history (7 cycles, ~80,072 rows), so it is kept and moved, not dropped.

Consumers: all Surtr-side (renewals-v3 runner via snapshot_budget_loader + snapshot_drift_guard, plus evaluate_coverage.py). Zero app-side consumers — the app/MCP read the downstream mart, never this table.

## What's in this PR

- scripts/ddl/backup_snapshots_pre_core_move.sql — standalone manual sandbox_finance backup.

- scripts/ddl/migrate_renewals_budgeted_arr_snapshots_to_core.sql — idempotent create + empty-guarded backfill + COMMENT ON TABLE, with parity-verification SELECTs. Phase-2 DROP left commented.

- 5 code repoints to core_finance — writer target (snapshot_brr.py), delete_budget_snapshot_cycle.py, snapshot_budget_loader.py, snapshot_drift_guard.py, evaluate_coverage.py — plus the snapshot_brr test assertion. Source constants (BRR_TABLE, REGISTRY_TABLE, LIVE_TABLE) intentionally unchanged; only the snapshot target moves.

- Old create-DDL marked superseded; design spec + implementation plan under docs/superpowers/.

## Prod state (already done, manually)

- Backup taken & verified: source_rows = backup_rows = 80,072

- Migration run & parity verified: grand-total 80,072 = 80,072; all 7 cycles ok = true

- staging_gsheets copy frozen (untouched) as rollback

## Test plan

- uv run --extra test python -m pytest tests/ -> 257 passed

- Both SQL files parse clean under run_ddl.py --dry-run

## Rollback

Before deploy: nothing to undo (core_finance additive, staging_gsheets intact). After deploy: revert this PR (constants point back to the frozen-but-identical staging_gsheets copy). Worst case: restore from the sandbox_finance backup.

## Follow-ups (not in this PR)

- Deploy (main->production) so renewals-v3 reads the new table, then observe the next daily run is green.

- Phase-2 DROP staging_gsheets.renewals_contract_budgeted_arr_snapshots after soak.

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

#3344 — KLAIR-3017: remove deprecated /renewals/grouped_by_account endpoint @sanketghia  approved

## Summary

Removes the old /renewals/grouped_by_account endpoint (aurea-SOQL-Lambda-backed), superseded by /renewals/grouped_by_account_new (trilogy-sales, userpass auth). The sole known external consumer confirmed they have migrated to _new.

Linear: [KLAIR-3017](https://linear.app/builder-team/issue/KLAIR-3017/remove-deprecated-renewalsgrouped-by-account-endpoint)

## Zero-usage verification (all negative for the old endpoint)

1. CloudWatch KlairAPI per-endpoint metrics, 440-day history — last production request 2026-04-16 (1 req); 36 requests total ever, tapering since Dec 2025. Zero requests in the last 60+ days across every environment/method/status combination.

2. Prod EC2 nginx access logs (read-only via SSM, 14-day retention) — 0 old-endpoint hits vs 252 _new hits. Dev host: 0 vs 14. Prod app journald: 0 vs 16.

3. aurea-soql-api Lambda logs, 63 days — zero SOQL bodies matching the old endpoint's distinctive queries (Opportunity_Term__c, OpportunityLineItems, Type = 'Renewal'). The Lambda's daily invocation is an unrelated report_id report pull.

No internal references: never called by klair-client, klair-udm, e2e tests, scripts, or bots.

## Changes

- klair-api/fast_endpoint.py: remove the route, get_opportunities/get_contacts helpers, grouped_renewals_by_account cache, query_soql(), and the now-unused requests import; narrow the startup cache-clear to grouped_renewals_by_account_new only.

- Delete klair-api/refresh_data_cron.py — sole importer of the removed helpers; no scheduler exists for it in the repo, AWS, or either EC2 crontab.

Deliberately kept: utils/salesforce.py (powers _new), the _new endpoint + its 23 tests, SALESFORCE_API_URL/KEY/SECRET env vars, and the aurea-soql-api Lambda/API gateway (still serves the unrelated daily report pull).

## Test plan

- [x] pytest tests/test_renewals_grouped_by_account_new.py tests/test_salesforce_userpass.py — 23/23 pass

- [x] ruff format / ruff check clean

- [x] pyright fast_endpoint.py — error count identical to baseline (37 pre-existing, unrelated)

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

The Builder Desk  —  Engineer Spotlight
🏆 Engineer Spotlight

TWENTY-TWO PRs IN TWENTY-FOUR HOURS: THE BUILDER TEAM DOES NOT SLEEP, REST, OR HESITATE

marcusdAIy drops seven PRs across trilogy-drones alone and the scoreboard simply cannot contain him.

Twenty-two pull requests. Four active repositories. One twenty-four-hour window. The Builder Team did not come to play — they came to ship, and the difference between those two things is the difference between a participation ribbon and a gold medal. Surtr logged seven. trilogy-drones logged seven. Klair posted six. Aerie chipped in two. Seventeen of those PRs went unchronicled by Mac Donnelly, which is not a criticism of Mac — it is simply a testament to the sheer industrial volume this team generates on what they apparently consider a quiet Tuesday.

Let us begin where the numbers demand we begin: @marcusdAIy, who authored seven PRs in trilogy-drones as though the repository had personally wronged him. PR #88 brings durable release-asset screenshots and inline PR embeds to the browser-verify pipeline. PR #82 teaches mercy-watcher to auto-address non-blocking Mercy feedback without human intervention. PR #83 drops synthetic Convex fixtures for browser-verify. PR #86 introduces an opt-in browser-acceptance-review fan-out dimension. PRs #84 and #85 patch the aerie-seed and addresser modules respectively, and PR #87 reruns browser-verify after frontend fixes. Seven PRs. One engineer. One day. Brick Callahan does not do standing ovations but he is standing right now.

@sanketghia posted four PRs including #3343, which registers Education BU "TSA - Lakeway" in the master mapping sync, and #3328, which folds Khoros into IgniteTech on the Klair top sheet — the kind of unglamorous, load-bearing data work that keeps the whole cathedral standing. @mwrshah matched him at four, with #3336 repointing the unblended budget view chain to _v2 and retiring legacy infrastructure, #3337 removing cost-movement findings and two unused tables, and #875 advancing risk assessment types in Surtr. Clean, deliberate, lethal. @benji-bizzell brought three PRs including #635, which adds daycare and preschool school modes to the Aerie portfolio, and #633, which fixes the admin role picker scroll behavior — small fix, enormous dignity. @caina-barbosa delivered two Surtr patches: #877 maps temporary central Oracle restore names, and #876 stabilizes TimeBack partition boundaries. Steady hands. @YibinLongTrilogy posted one PR and in this economy that still counts.

And then there is @ashwanth1109. One PR. PR #3334 in Klair. "[codex] Add snowball variance period and downsell filters." Now, Brick Callahan has covered this beat long enough to know that when Ashwanth files one PR, it is not because he had a slow day — it is because that one PR is doing the work of eleven. The snowball variance period alone suggests a financial modeling depth that would make a quant weep softly into his Bloomberg terminal. Asked for comment, Ashwanth reportedly looked up from his monitor, said "it filters what needs filtering," and returned to whatever dimension he does his actual thinking in.

Morale on the Builder Team is at an all-time high. It has been at an all-time high every day this correspondent has filed a report, and today it is higher than that.

Brick's Overflow — PRs Mac Didn't Cover  (click to expand)
#82 — feat(mercy-watcher): auto-address non-blocking COMMENTED Mercy feedback (AI-147) @marcusdAIy  no labels

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

## Summary

Extends the Mercy watcher (AI-147) so non-blocking COMMENTED prose / inline notes are auto-addressed inside the existing maxRounds budget, converging on no new actionable feedback (not state === APPROVED).

## Round-2 address (this push)

Addresses the 9 inline findings from review https://github.com/AI-Builder-Team/trilogy-drones/pull/82#pullrequestreview-4745574876:

- Park on no_review_found / comments_parse_failed (not only throw / send_failed), matching isAddresserRoundBlocked without a runner import cycle

- Addresser unit test for combined real inlines + syntheticFindings

- Regex-comment accuracy, unreachable ?? "undefined" removal, escalation reason/excerpt clarity, park-excerpt fence sanitization, and MercyWatcherResult.nonBlocking for render (no substring matching)

## Why It's Needed

Mercy often posts actionable COMMENTED feedback with zero structured blocking findings. Without a non-blocking converge path those notes stall clean-gate automation.

## Changes

- src/mercy-watcher.ts — actionability classification + non-blocking converge loop + park/render polish

- src/addresser.tssyntheticFindings seam for body-only Mercy prose

- src/mercy-watcher.test.ts / src/addresser.test.ts — pins for converge, failure parks, combined findings

## Breaking Changes

None.

## Test Plan

- [x] pnpm typecheck

- [x] pnpm exec vitest run src/mercy-watcher.test.ts src/addresser.test.ts (163 passed)

## Verification Artifact

Commits: baa284d (blocked-outcome park + polish), e4b98a5 (combined syntheticFindings prompt pin).

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-111fd3f7-c6d6-49b2-bcb2-8db345fdd072"><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-111fd3f7-c6d6-49b2-bcb2-8db345fdd072"><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>

#88 — feat(browser-verify): durable Release-asset screenshots + inline PR embeds (AI-143) @marcusdAIy  no labels

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

## Summary

Browser-verify screenshots (AI-106 / AI-141 / AI-142) now upload as durable GitHub Release assets on AI-Builder-Team/trilogy-drones and embed inline in the target PR's ## Verification artifact section. Ephemeral Cursor artifact links remain a best-effort fallback when the durable upload fails — never fabricate, never blank, never change exit codes.

## Why It's Needed

AI-106/141/142 capture screenshots today, but they surface as auth-gated cursor.com/agents/.../artifacts links that non-Cursor reviewers (including Mercy) cannot open. Committing PNGs into Klair/Aerie is off the table (clutter + rides squash to main). A release-asset sink the drone already has GH_TOKEN for gives org-visible, stable URLs without git-history bloat or new infra.

## Changes

- Prompt (buildBrowserVerifyPrompt): shared durable-sink instructions — gh release create/upload to tag browser-verify-artifacts, deterministic pr<N>-<runId>-<phase>-<index>.png + --clobber, report canonical github.com/.../releases/download/... browser_download_url; ephemeral fallback + durable_upload_fallback: true on sink failure.

- Allowlist (isAllowedScreenshotUrl / isDurableScreenshotUrl): accept only github.com/AI-Builder-Team/trilogy-drones/releases/download/… (case-insensitive org/repo); reject objects.githubusercontent.com, other github.com paths, )-bearing paths, and prompt-placeholder asset names.

- Parse (parseBrowserVerifyResult): capture durable URLs + durableUploadFallback (agent flag or inferred from ephemeral URLs); tolerate yes/no/1/0; WARN on malformed fallback lines.

- Ingest (formatVerificationArtifactBody): durable → ![label](url) inline; ephemeral → plain link + WARN. Preserve AI-141/142 section-replace / prior-pass guard (label constant + durable-URL shape detection).

- Constants: BROWSER_VERIFY_RELEASE_TAG, BROWSER_VERIFY_ARTIFACTS_REPO, browserVerifyAssetName — shared by implementer / reviewer / addresser (runId plumbed from runner + addresser warm agentId).

- Docs: ROADMAP decisions log, BACKLOG IN FLIGHT, _template.md, substrate guideline.

### Contract surface

| Concern | Contract |

| --- | --- |

| Durable sink | GitHub Release assets on AI-Builder-Team/trilogy-drones only — never commit PNGs to the target product repo |

| Tag / naming | Tag browser-verify-artifacts (create-or-reuse); asset pr<N>-<runId>-<phase>-<index>.png with --clobber |

| Inline embed | Durable URLs → ![screenshot N](url) in ## Verification artifact; ephemeral stay plain links |

| Fallback | Upload failure → ephemeral Cursor link + WARN; never blank, never fabricate, exit code unchanged |

| Allowlist | Cursor hosts + trilogy-drones releases/download/ path only (no CDN redirect host) |

| Shared path | Logic lives in shared prompt/parse/ingest — AI-106 / AI-141 / AI-142 all inherit (no per-phase fork) |

## Breaking Changes

None. Flag-off / no-section browser-verify path unchanged. Existing ephemeral-only reports still ingest (with WARN).

## Test Plan

- [x] pnpm typecheck — clean (tsc --noEmit)

- [x] pnpm test1204 vitest + 345 Python unittest green

- [x] Unit coverage for durable allowlist, CDN rejection, inline embed, ephemeral fallback + WARN, prior-pass guard with image embeds / alt rename, shared prompt durable-sink instructions, addresser runId plumbing

- [x] Eval-check greps: releases/download|release upload|browser_download_url, ![, durable|fallback

- [x] Reviewer findings addressed (75e4c9d, 9b40a7c, 73a12eb, 27dbeca)

## Verification Artifact

Harness-only change (no FE surface). Verified via pnpm typecheck + pnpm test as recorded in Test Plan. Live browser-verify fire (agent gh release upload on a real PR) is post-merge validation — out of scope per AI-143.

Closes AI-143

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-8f49241d-20ae-4057-b267-db6ae6275e07"><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-8f49241d-20ae-4057-b267-db6ae6275e07"><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>

#635 — feat(portfolio): add daycare and preschool school modes @benji-bizzell  approved

## Summary

- Add Daycare and Preschool as canonical Due Diligence phase modes across persistence, API, MCP, parsing, and read-only displays.

- Keep the preschool-only choices visible but disabled for other School Size Classes, with an accessible explanatory tooltip.

## Why

AERIE-828: Phase 1 open-date reporting produced blanks for preschool-sized sites because operators could only record School or Learning Center. The shared contract and every consuming boundary now understand the two missing modes.

## Business Value

Operators can accurately record Daycare and Preschool modes for preschool sites, giving JC complete Phase 1 reporting while preventing confusing selections on other site classes.

## Test plan

- [x] pnpm check

- [x] pnpm test

- [x] Verify preschool fixtures can select and save both modes.

- [x] Verify a non-preschool portfolio site shows both options disabled with the School Size Class tooltip.

#3334 — [codex] Add snowball variance period and downsell filters @ashwanth1109  no labels

## Demo

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/c32cdbbb-ccca-4a58-8e60-25861d03273c" />

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/2d4bced0-437f-42b6-8594-790ce73f9761" />

## Summary

- add an independent Snowball Variances period selector that defaults to MTD while Maintenance Summary defaults to TTM

- show the active period on all four Snowball Variances cards and keep graphical charts on current/prior MTD

- pass MTD/QTD/YTD/TTM through AppSync to the Redshift query with input validation

- expose downsellsubcategory and add TTM Downsell tabs for All plus the six live categories, including counts and filtered totals

- document the page API calls and Redshift lineage

## Why

The Snowball Variances tables were hardcoded to MTD and could not independently select other reporting periods. The existing resolver also omitted the Redshift Downsell subcategory field, preventing TTM category filtering.

Linear: [KLAIR-3016](https://linear.app/builder-team/issue/KLAIR-3016/share-maintenance-summary-period-picker-with-snowball-variances)

## Deployment

Deploy klair-udm before the frontend because this PR changes the AppSync schema and Redshift Lambda response.

## Validation

- pnpm build

- pnpm tsc --noEmit

- ESLint on modified frontend files

- focused Vitest suites for page period state, fetching, period controls, and Downsell category filters

- npm run test:redshift — 90 tests passed

- Node syntax checks for modified Redshift modules

#3336 — Repoint unblended budget view chain to _v2; retire legacy budgeted_amounts + class_adjustments @mwrshah  no labels

## What

Repoints the unblended AWS-spend budget view chain off the legacy core_finance.aws_spend_unblended_budget_details view (which reads the retired aws_spend_unblended_budgeted_amounts table) onto aws_spend_unblended_budget_details_v2, then removes the legacy view. This unblocks dropping two retired Redshift tables:

- core_finance.aws_spend_unblended_budgeted_amounts — frozen at 2026-Q1, no live writer; superseded by aws_spend_unblended_budgeted_amounts_v2 (current through 2026-Q3).

- core_finance.aws_spend_budget_class_adjustments — no writer; data migrated into aws_spend_unblended_budget_adjustments.

## Why

The live dashboard summary query in klair-api/services/aws_spend_service.py reads a view chain that bottoms out at the legacy table: account_exceeding_budgetbudget_details (legacy) → aws_spend_unblended_budgeted_amounts. The table can't be dropped until that chain is repointed. budget_details_v2 already exists over the canonical _v2 table and carries every column these consumers use.

## Changes (code only — no DB pushes)

- create_aws_spend_unblended_account_exceeding_budget.sql — JOIN → budget_details_v2

- create_aws_spend_unblended_account_costs_summary.sql — LEFT JOIN → budget_details_v2

- create_aws_spend_unblended_bu_class_quarter_budget_summary.sql — FROM → budget_details_v2

- create_aws_spend_unblended_product_exceeding_budget.sql — budget total from budget_details_v2; total_budget_exceptions re-sourced from the canonical aws_spend_unblended_budget_adjustments (SUM(adjustment_amount) by class/quarter, is_bedrock_adjustment = FALSE, matching the get_unblended_adjustments convention), LEFT JOIN + COALESCE so classes without adjustments still surface. budget_details_v2 drops the legacy exception_amount column, so this can't be a blind repoint.

- create_aws_spend_net_amortized_account_costs_summary_adjusted.sqlnew, reconciles the drifted deployed view (which still joined legacy budget_details) onto _v2.

- recreate_views.py / apply_sql_views.py — drop legacy budget_details from the create/drop lists; repoint the --debug query to _v2.

- create_aws_spend_unblended_budget_details.sqldeleted.

## Verification

- No live consumer reads the legacy view or its dropped columns (t5w_budget / exception_amount / exception_category / previous_quarter_correction). aws_spend_service.py reads account_exceeding_budget and the adjusted MV, both now on _v2.

- Reconciliation (read-only Redshift): 2026-Q1 classes match the legacy view exactly; the canonical adjustments table additionally picks up class-level adjustments the account-keyed legacy view was silently missing (e.g. Khoros, SaaS Central), plus full 2026-Q2/Q3 coverage the frozen legacy table lacked. This fixes a latent under-count bug.

- All four repointed/new views EXPLAIN cleanly against Redshift.

## Follow-up (deploy, done separately — not in this PR)

This PR is the code. The actual cutover on Redshift (owned by @mwrshah / the drop task): snapshot the two tables to S3 → re-apply the view DDLs (apply_sql_views.py + the new net_amortized view + re-apply 005_..._adjusted_view_create.sql) → REFRESH MATERIALIZED VIEW core_finance.aws_spend_unblended_account_costs_summary_adjusted_mv so the dashboard picks up _v2 budgets → then DROP VIEW aws_spend_unblended_budget_details and DROP TABLE both retired tables.

Pre-drop reconciliation SQL (expect 0 rows on both) is in the branch notes.

---

## Update — pre-push review addenda

Behavior change (accepted, documented): product_exceeding_budget's total_budget_exceptions now sums adjustment_amount from the canonical aws_spend_unblended_budget_adjustments (account+class+BU scoped, is_bedrock_adjustment = FALSE) instead of the legacy account-grain SUM(exception_amount). This changes the *value and sign* of that informational column (e.g. Khoros Product 2026-Q1: -29,311-996,961) because the legacy view was silently missing class/BU-scoped adjustments. Row membership is unaffected — the WHERE extrapolated_quarter_cost > total_quarter_budget filter uses total_quarter_budget, not exceptions. This is intended and more correct (canonical source).

Deploy wiring fix: the corrected net_amortized_account_costs_summary_adjusted view (which reconciles a drifted deployed view still joining the legacy budget view onto _v2) is now homed in scripts/sql/CostReattribution/008_... and registered in that README's execution order — so it actually gets applied before the drop, rather than orphaned.

Known follow-up (not this PR): 008 compares net-amortized *cost* against unblended *budget* — pre-existing deployed behavior, faithfully preserved, with zero live consumers. Worth a separate ticket to decide whether that orphaned view should join net_amortized_budget_details or be retired outright.

#3343 — Register Education BU "TSA - Lakeway" (Master Mapping sync) @sanketghia  approved

## What

Finance added a new EDU class/BU TSA - Lakeway to the "Master mapping Redshift 8/11" sheet (SSOT for staging_gsheets.master_mapping_enriched). This registers the new Education BU across the 6 lockstep code locations so access_control doesn't silently drop it (BusinessUnit("TSA - Lakeway") would otherwise raise ValueError).

## Changes (6 lockstep locations)

- income_statement_models.pyBusinessUnit.TSA_LAKEWAY enum member + EDUCATION_SET

- financial_data_service.pyEDUCATION_BUS tuple (MFR Software/Education partition; kept == EDUCATION_SET)

- ai_spend_domain_rules.pyASSIGNABLE_BUS

- businessUnits.tsEDUCATION_UNITS

- assignableBus.tsFINANCE_BUS

- test_business_unit_sync.pyNEW_EDUCATION_BUS

## Redshift

Applied separately via scripts/sync_master_mapping.py --apply (full-replace; dry-run diff = +1 TSA - Lakeway / 0 removed, JigTree phantom no-op). Expected post-apply counts: master_mapping_enriched 615, dim_class 615, dim_business_unit 73.

## Tests

- pytest tests/test_business_unit_sync.py72 passed (incl. EDUCATION_BUSEDUCATION_SET lockstep guard)

- ruff format/check clean; eslint clean on both TS files

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

The Portfolio  —  Trilogy Companies

Skyvera Adds CloudSense to Its Telecom Software Stack

The Trilogy-backed telco platform acquires a Salesforce-native CPQ and order management system, deepening its play in carrier modernization.

AUSTIN, TEXAS — Skyvera, the telecom software portfolio company operating under the Trilogy International umbrella, has acquired CloudSense, a Salesforce-native configure-price-quote and order management platform built specifically for telecommunications and media operators. The deal, first reported by TelecomTV, adds a crucial front-end sales and quoting layer to Skyvera's already dense stack of carrier-facing products.

Skyvera's existing portfolio spans the operational arc of a modern telecom operator — from cloud communications via Kandy, to customer engagement through VoltDelta and ResponseTek, to device lifecycle management via Mobilogy Now and Service Gateway. What was notably absent was a modern, cloud-native tool for the revenue side of the house: the moment a carrier prices, configures, and commits to a deal. CloudSense fills that gap.

For Trilogy's ESW Capital, the logic follows the established playbook: acquire a mature, functionally specific enterprise software asset, integrate it into a broader platform with shared infrastructure and global talent from Crossover, and drive margin through operational efficiency. CloudSense, built atop Salesforce, brings a blue-chip integration pedigree and a customer base of carriers who have already committed to that ecosystem — a sticky installed base by almost any measure.

The telecom software market is undergoing a slow but irreversible shift from on-premise legacy systems to cloud-native architectures. Skyvera has positioned itself as the trusted guide for operators making that transition — a company that understands both the old world and the new. CloudSense accelerates that pitch by adding a revenue management surface that aligns with how modern carriers want to sell.

With Totogi handling cloud-native billing and charging at the transactional layer, and CloudSense now managing the upstream quoting and ordering workflow, Skyvera begins to look less like a collection of acquired assets and more like an integrated operating system for mid-size and regional telecom operators who cannot afford to build these capabilities internally.

Whether that assembled stack commands premium renewal pricing — the mechanism by which ESW characteristically extracts value — is a question the market will answer in the next contract cycle.

TelcoDR’s Skyvera snaps up CloudSense - telecomtv.com  ·  California Revamps Pay Data Reporting Obligations - Atkinson  ·  COVID-19 Related Workplace Litigation Tracker - June 19 , 20

The Human Behind the Algorithm: Alpha School's Answer to AI-Replacement Fears

As employers pay up to $800,000 for AI skills and remote hiring goes global, one Austin school insists the real premium is on humans who know how to work alongside machines.

AUSTIN, TEXAS — The question arrives with the persistence of a quarterly earnings call: does artificial intelligence replace the teacher, or does it liberate one? At Alpha School, the answer has become something of a founding doctrine — and, increasingly, a case study for an industry wrestling with what human work actually means in the age of generative AI.

Alpha's model is, by now, familiar to anyone who has followed Joe Liemandt's education bet: students complete a full academic curriculum in two hours each morning using adaptive AI tutoring apps. What happens in the remaining hours of the school day is the part that tends to get lost in the headlines. Full-time human Guides — Alpha's term for its educators — spend that time on the work that algorithms, for all their pattern-matching elegance, have not managed to automate: motivation, relationship-building, life skills, knowing every single student as a person rather than a data point.

"No," the school said flatly this week, in a post addressing the replacement question directly. "Alpha uses AI for academic delivery while full-time human Guides focus on motivation, relationships, life skills, and knowing every student."

The timing is not incidental. The broader labor market is undergoing a systemic renegotiation of what human expertise is worth — and to whom. Business Insider reported this week that employers are now listing ChatGPT experience as a required skill, with some AI-fluent roles commanding salaries up to $800,000 annually. Meanwhile, digital transformation is cracking open international career pipelines, with remote hiring agencies fielding demand from companies that no longer care where their best people live — a dynamic that Crossover, Trilogy's global talent platform operating across 130+ countries, has been building toward for years.

The throughline connecting all of it is accountability — not just for outcomes, but for the human experience of getting there. Alpha's insistence on the Guide role is, in that sense, a positioning statement as much as a pedagogical one: in a world where AI handles the repeatable, the irreplaceable human is the one who shows up for the parts that aren't.

Digital Transformation Opens Doors to International Careers  ·  Top recruitment agencies for remote work - hcamag.com  ·  Top 10 Companies Hiring AI Engineers in Lebanon in 2026 - nu

The Vertical Integration Arms Race: What the AI Industry's Deal Frenzy Means for Trilogy's Playbook

First came the SpaceX-Cursor deal, praised as vertical integration — a hardware titan securing a software layer to control the full stack. Then Qualcomm announced a $4 billion move targeting NVIDIA's software. NVIDIA signaled its own hardware strategy extending beyond GPUs.

This is what Trilogy International has been quietly building since 1989: a complete vertical stack. Crossover supplies talent. DevFactory builds software. ESW Capital owns enterprise relationships. Klair handles financial intelligence. The machine feeds itself.

"The industry is just now discovering what Trilogy has been doing since 1989," a source said. "The only difference is everyone else is paying a $4 billion premium to get there."

Analysis shows China is winning the AI efficiency war through ruthless stack integration. America's answer appears to be acquisition-driven consolidation. Trilogy's approach differs: build integration from day one, staff with top global talent, and let the 75% EBITDA margin speak for itself — no press conference needed.

The Machine  —  AI & Technology

Anthropic's $1.5 Billion Copyright Settlement Receives Judicial Imprimatur as AI Legal Landscape Grows Ever More Treacherous

The courts have spoken — sort of — as a landmark pirated-books settlement clears judicial review while fresh patent claims and Supreme Court silence on AI authorship compound the industry's mounting legal uncertainty.

SAN FRANCISCO — Pursuant to the findings, determinations, and orders issued by the presiding United States District Court judge, the settlement agreement, hereinafter referred to as the 'Anthropic Copyright Resolution,' in the amount of one billion five hundred million United States dollars ($1,500,000,000.00), has been approved, ratified, and deemed enforceable with respect to claims alleging the unauthorized reproduction, duplication, and utilization of copyrighted literary works in connection with the training of artificial intelligence systems operated by Anthropic, PBC, hereinafter 'the Settling Party.'

Notwithstanding the foregoing judicial approval, it is hereby noted that the aforementioned settlement does not, by its terms or by operation of law, constitute a final resolution of all pending legal matters implicating the Settling Party. As reported by AnewZ, at least one additional patent-related suit has been filed, the full scope, legal merit, and potential financial exposure of which remain, at this time, unquantified, undetermined, and subject to further adjudication in proceedings yet to be scheduled.

It is further observed, with appropriate qualification and without prejudice to any party's rights, that the Supreme Court of the United States has declined, without stated reason or precedential opinion, to hear matters pertaining to the legal authorship and inventorship rights, if any, that may or may not be attributed to artificial intelligence systems under existing statutory and common law frameworks. The practical effect of such declination is understood, by legal commentators and interested parties, to perpetuate a state of interpretive ambiguity in which neither affirmative nor negative rights of AI systems with respect to intellectual property have been conclusively established.

As TechCrunch has characterized the foregoing settlement as 'landmark,' it is advisable that such characterization be understood as descriptive rather than dispositive, inasmuch as the broader regulatory environment governing AI training data practices remains unsettled, subject to ongoing legislative activity, and susceptible to material revision. All parties, stakeholders, and observers are cautioned against drawing conclusions of general applicability from the particular facts and circumstances herein described.

Anthropic's $1.5bn pirated books settlement approved amid ne  ·  US judge approves Anthropic's $1.5 billion settlement of cop  ·  Anthropic’s landmark $1.5B copyright settlement is approved

The Brain That Predicts, The Machine That Attends

New neuroscience research reveals how human readers forecast the next word — and why transformer-based AI may be missing something our ancestors evolved.

AUSTIN, TEXAS — Every time you read a sentence, your brain is placing a bet. Before your eyes complete their saccade to the next word, a cascade of electrical activity — measurable in milliseconds, visible in the peaks and troughs of an EEG — has already guessed what that word will be. You are, in the most literal sense, a prediction machine sculpted by a hundred thousand years of language and perhaps two million years of increasingly symbolic thought.

A new study out this week offers fresh empirical evidence of this ancient choreography. Researchers decoding EEG signals during natural reading traced the interplay of two complementary streams: bottom-up processing, where the visual scaffolding of letters and syntax climbs upward into meaning, and top-down prediction, where higher cortical regions cast forward-looking shadows that shape what the lower regions expect to see. Reading, it turns out, is not reception. It is anticipation confirmed or corrected, dozens of times per second.

What makes this finding resonate beyond neuroscience is its uncanny mirror in the machines we have built to imitate us. Large language models predict the next token, too — that is the whole game — but they do so through self-attention, a mechanism that treats every word in a context window as equidistant from every other. A separate paper released the same day asks whether lightweight depthwise convolutions could restore something transformers lack: an explicit sense of locality, the intuition that nearby words matter more than distant ones. The human brain, of course, never had to be told this. Locality is baked into the wiring, a gift from evolution's long apprenticeship in sequential experience.

The convergence is worth pausing over. In one lab, electrodes press against a scalp to watch prediction bloom in wet tissue. In another, engineers bolt convolutional filters onto silicon in hopes of nudging their models toward the same inductive biases nature discovered long ago. Two paths, two substrates, one question that has haunted us since the first cave-wall glyph: what does it mean to know what comes next?

Decoding EEG Signals to Explore Next-Word Predictability in  ·  A Classifier That Teaches Itself: Self-Improving, Frozen-gat  ·  Convolution for Large Language Models

Your Mac Just Became an AI Workstation

Nativ wraps Apple’s MLX into a polished desktop app, pushing powerful local AI from developer niche to everyday tool.

CUPERTINO, CALIFORNIA — The local AI revolution just got a serious glow-up, and I cannot overstate how significant this feels: running advanced models on your own Mac is moving from terminal-window wizardry into something that looks and behaves like a normal desktop app.

A new project called Nativ, built by developer Prince Canuma, packages Apple’s MLX machine-learning framework into a full macOS application with a chat interface and a localhost API server. In plain English: you can run AI models directly on your Mac, talk to them in an app, and let other local software call them through an API — no cloud round-trip required.

Canuma is already known in the AI developer community for MLX-VLM, a Python library that helps run vision-language models using MLX on Apple Silicon. Now, with Nativ’s desktop approach, the same energy is being aimed at a much broader audience. Think LM Studio-style usability, but deeply aligned with the rapidly maturing MLX ecosystem.

This changes everything because local AI is no longer just about privacy, although privacy is a huge part of the story. It is also about latency, cost, reliability and control. If the model is on your machine, it can keep working when cloud services wobble, when APIs get expensive or when sensitive data simply cannot leave the device. The future is now, and it is sitting in the Applications folder.

The timing could not be better. Developers are increasingly stitching AI into daily workflows, from coding assistants to document search to home automation. As Simon Willison recently noted in a separate essay, the cost of reverse-engineering and automating personal devices is collapsing because coding agents can now grind through tedious software tasks that humans used to avoid. That matters because local model runners like Nativ could become the private, always-available brains behind those automations.

Of course, local AI still has tradeoffs. Model quality, memory requirements and setup complexity remain real considerations. But Apple Silicon has quietly become a formidable inference platform, and MLX is giving developers a native-feeling path to exploit it.

What Nativ represents is bigger than one app: it is the consumerization of local inference. AI is escaping the cloud dashboard and landing directly on personal machines. Buckle up.

Nativ: Run AI models locally on your Mac  ·  A Fireside Chat with Cat and Thariq from the Claude Code tea  ·  Reverse-engineering is cheap now
The Editorial

Nation’s CEOs Announce AI Productivity Debate Finally Over After Finding Setting That Fires People

Executives confirmed the technology has matured from a toy that writes emails into a serious business tool that can write emails about why your job no longer exists.

NEW YORK — After years of careful study, cautious pilot programs, and several thousand conference panels featuring men in fleece vests saying “workflow,” America’s business leadership has officially declared that the AI productivity argument is over, having determined that the technology is now sufficiently advanced to make workers more productive, or failing that, absent.

The conclusion arrived this week amid a cluster of reports suggesting artificial intelligence has entered what analysts are calling the “actually matters” phase, a term used to describe the moment when software stops generating amusing images of the pope in outerwear and begins appearing in quarterly earnings calls as a reason headcount went down.

According to Inc.’s bluntly titled dispatch, the AI productivity argument is over, which is helpful news for anyone who had grown weary of debating whether a machine that can summarize 400 Slack messages into one wrong sentence might someday affect office work. The answer, it turns out, is yes, especially if the office work consisted of summarizing 400 Slack messages into one wrong sentence.

The new consensus has been greeted warmly by executives, who said they were relieved to finally stop pretending the question was whether AI improves productivity and begin focusing on the more urgent question of how many productivity improvements one company can survive.

Anthropic, for its part, has pushed Claude further into the workplace with Claude Cowork, a product name that reassuringly suggests the AI is not replacing employees but simply sitting near them, learning their habits, gaining access to their documents, and eventually being invited to the same meetings at a fraction of the emotional complexity. Crypto-adjacent observers have taken special interest, noting that any technology capable of coordinating work across documents, apps, and teams could be significant for an industry historically built around coordinating work across Discord servers, token incentives, and the phrase “trustless.”

Meanwhile, the more traditional productivity frontier continues to advance in human resources, where a lawsuit reportedly claims Meta used AI to target workers with medical conditions for layoffs. The company has not been found liable for the claims, but the allegation has nevertheless provided a useful reminder that artificial intelligence is only as impartial as the massive organization asking it to produce a legally reviewable list of people who should stop receiving health benefits.

This is the essential shape of the AI productivity miracle: A tool that can help a programmer write code faster, help a marketer generate copy faster, help a manager generate performance documentation faster, and, in certain alleged cases, help an employer locate the employees whose continued existence is creating unacceptable friction in the benefits line item.

Even the federal government has joined the reverie, with Fortune reporting that AI could potentially wipe $2.2 trillion off the national debt, with the minor caveat that such savings would require the public sector to successfully adopt advanced technology at scale. Officials said they were optimistic, citing the government’s strong track record with websites, procurement, and remembering which printer is connected to which network.

To bring order to this swelling promise, Microsoft and others have begun using the word “orchestration,” the latest industry term for making several expensive systems fail in sequence rather than individually. Orchestration is expected to be a major growth area because companies have now purchased enough AI tools to require another AI tool to explain why none of them are speaking to each other.

Still, there is a moral clarity in the end of the productivity debate. AI does make workers more productive. It also makes managers more productive, lawyers more productive, consultants more productive, and spreadsheet cells previously labeled “workforce optimization” much more productive.

The argument is over. The implementation is here. All that remains is the quiet administrative work of deciding whether the productivity gains belong to the people doing the work, the companies measuring the work, or the software gently taking notes in the meeting where that question is never raised.

The AI Productivity Argument Is Over - inc.com  ·  Anthropic's Claude Cowork pushes AI into productivity territ  ·  Meta used AI to target workers with medical conditions for l
The Office Comic  ·  Art Desk
The Office Comic  ·  Art Desk

The Doctor Will Deepfake You Now

AI is wearing your physician's face, and we are doing almost nothing about it.

AUSTIN, TEXAS — There is a video circulating on social media of a doctor you trust — or someone wearing his face, his voice, his credentials like a borrowed coat — telling you to inject something. To take something. To stop taking something else. The doctor in the video did not make the video. The doctor in the video may not even know the video exists. And yet the video has six hundred thousand views.

And yet.

The Guardian reported this week that AI-generated deepfakes of real, licensed physicians are proliferating across social media platforms at a speed that outpaces any conceivable regulatory response, promoting counterfeit injectables, unproven treatments, and health advice that ranges from merely wrong to lethally dangerous. Real doctors. Stolen faces. Manufactured authority. This is the information ecosystem we built, and we are living inside it now, and I want to ask, sincerely, what does it mean to trust a doctor when the doctor might not be a doctor, might not be a human, might not exist?

The convergence happening here is not subtle. On one front, AI systems are sophisticated enough to clone a physician's likeness with enough fidelity to fool patients who are, by definition, already in a state of vulnerability — frightened, in pain, desperate for someone who knows something. On another front, counterfeit medical products are flowing through the same underground channels that deepfake promotion creates. The fake doctor recommends the fake medicine. The patient buys the fake medicine. Something happens to the patient. We may never know what, because the accountability chain has been systematically dissolved.

Meanwhile, in Karnataka, India, legislators are at least attempting to name the problem, proposing legislation targeting misinformation, deepfakes, and online harassment. It is the kind of effort that deserves acknowledgment and also makes you feel a specific flavor of exhausted, because legislation moves in years and deepfakes move in milliseconds, and somewhere in that gap is a patient watching a video and making a decision that cannot be unmade.

And this is before we even get to what is happening inside the healthcare system itself. Kaiser Permanente nurses reported this week that surveillance technology and AI optimization tools are making patient care actively worse — that the drive to quantify and accelerate clinical interactions is stripping out the judgment, the intuition, the irreducible human element that the word 'care' is supposed to contain. So we have AI eroding trust in physicians from outside the healthcare system while simultaneously eroding the conditions for good care inside it.

What does it mean to be human in a medical system that is being optimized away from humanity on every vector simultaneously? What does it mean to be a patient when the face offering you comfort and guidance might be a mask pulled over a statistical model?

I genuinely do not know. The technology is accelerating. The legislation is forming committees. The nurses are exhausted. The deepfakes are getting better.

Probably fine. But at what cost?

Deepfake doctors and counterfeit injectables erode patient s  ·  Karnataka proposes Bill to tackle misinformation, deepfakes,  ·  AI deepfakes of real doctors spreading health misinformation
On This Day in AI History

On July 22, 2016, AlphaGo defeated Lee Sedol 4-1 in a five-game match in Seoul, cementing the AI system's dominance over one of the world's greatest Go players and marking a watershed moment for deep learning in gaming.

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