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

Google Reshuffles AI Command as Humanoid Robots and AI Funding Reshape the Technology Landscape

A day of consequential moves: Hassabis ascends at Google, Unitree tests public markets, Nvidia bets $300M on Israeli AI, and Meta absorbs nearly $1 billion in fines.

NEW YORK — Four stories broke within hours of each other Wednesday, each a data point in the same larger argument: the AI industry is entering a phase of institutional consolidation, legal reckoning, and speculative capital deployment at a scale that would have been implausible three years ago.

The most structurally significant move came from Google. Demis Hassabis, the Nobel laureate who built DeepMind into one of the world's premier AI research organizations, was named to a new, broader AI role — announced minutes after four senior researchers disclosed they were departing. The timing was either poor coordination or deliberate counterprogram. Either way, the signal is the same: Google is centralizing AI authority. Hassabis running a unified AI function gives the company a single command structure at a moment when OpenAI, Anthropic, and xAI are each moving faster than any individual Google division can match.

In hardware-adjacent capital markets, Nvidia confirmed participation in a $300 million funding round for Decart, an Israeli AI startup, at a $4 billion valuation. Nvidia's strategic investment arm has now backed companies across inference infrastructure, model development, and robotics — a portfolio strategy that hedges across every plausible AI architecture that runs on its chips.

On the robotics side, China's Unitree Robotics priced its IPO targeting approximately $900 million in proceeds. The offering tests whether public market investors will fund humanoid robotics ahead of proven commercial viability — a question the EV sector answered one way in 2021 and answered differently by 2023. Unitree's robots are demonstrably impressive in controlled settings. The gap between demonstration and deployment at scale remains the central risk.

Meanwhile, Meta absorbed its second nine-figure legal judgment in the same child safety case. A New Mexico judge added $567 million to a $375 million jury award, bringing total exposure in that proceeding alone to $942 million. The aggregate figure is material but not existential for a company generating over $160 billion in annual revenue. What is harder to price is the regulatory template: state-level courts are now willing to impose penalties that federal regulators have historically declined to pursue.

Meta Ordered to Pay $567 Million Fine by New Mexico Judge  ·  China’s Unitree Prices IPO in Bet Investors Are Ready for Hu  ·  Google Names Demis Hassabis to New AI Role in a Leadership S

Silicon Fever Grips Wall Street and the Lab Bench

A $400 million bet and a $9 million long shot land the same week — everybody wants the metal that keeps the machines from cooking themselves.

SAN FRANCISCO — Money hit the silicon trade hard this week, with AI hedge fund Situational Awareness staking $400 million on chip startup Source Foundry while upstart Discovered Materials scraped up $9 million to chase cooler chips. Two checks, one appetite. Everybody's hungry for the metal that runs the machines.

The heavy money came from a firm that's caught heat. Situational Awareness, the AI-focused fund the press has tagged embattled, wrote its $400 million ticket anyway, backing Source Foundry, a chip outfit still cutting its teeth. Say what you want about the fund — it's still making big bets.

The small check tells the other half of the story. Discovered Materials landed $9 million to play what it calls AI whack-a-mole. The game: point algorithms at the periodic table and hunt novel materials that run lean and cool.

It's a numbers racket with a long tail. Millions of combinations, most of them duds, a rare few worth a mint. Feed the machine, whack the moles, hope one pops.

Here's the why, and it's no mystery. The AI boom runs on chips, and the chips run hot. Every new model wants more of them, and every rack wants more juice and more cooling.

Datacenters bake. Power bills balloon. The servers still can't keep up, and the electric meter spins day and night.

Cooler, leaner silicon is the pot of gold. Whoever finds it — on a factory floor or in a test tube — writes their own ticket. So the cash comes running.

It's the shape of the whole trade right now. The AI crowd wants silicon faster than the world can bake it. So the money floods in at every stage — the factories that stamp the chips and the labs still dreaming up what goes in them.

Mind the gap between the two deals. Four hundred million buys a foundry a running start and a factory floor. Nine million buys a long-shot science bet that pays big if the dice land right.

Both are wagers on the same tomorrow. The machines want more chips, cooler chips, cheaper chips. The money's betting somebody delivers.

Meanwhile on the wire:

Anthropic flipped a switch. The company says its Claude Code tool will soon run auto mode by default, letting the machine write software with even less human looking over its shoulder. Less oversight, more speed — that's the pitch.

Google opened the till wider. Google Play now takes Venmo for apps and games, cash straight off the phone. The move lands as folks spend more inside their apps.

And a note from the workbench. The Classic-TKL Underscore Edition — a retro-styled wired keyboard, no number pad, no wireless — now ships preassembled. No soldering iron required.

That's the tape. Silicon's the headline, and the cash keeps chasing it — fat wallets and long shots, all week long.

Discovered Materials is playing AI whack-a-mole to hunt cool  ·  Google Play adds Venmo as a payment option  ·  Embattled hedge fund Situational Awareness invests $400M in

TRUMP'S ANTITRUST OVERHAUL: BIG TECH CRITIC TAPPED FOR DOJ, FTC DEMANDS FASTER COURTS

The Trump administration has nominated Adam Candeub, a technology critic and scholar, to head the Department of Justice's Antitrust Division. However, observers have noted that Candeub lacks trial experience in antitrust litigation, raising questions about his ability to prosecute complex cases against dominant market players. Meanwhile, Federal Trade Commission Chair Andrew Ferguson has argued that antitrust cases move too slowly through courts, allowing dominant firms to benefit from procedural delays, and called for expedited judicial resolution. Industry analysts remain uncertain whether these developments signal a significant shift in enforcement strategy for 2026. The regulatory environment facing major technology and artificial intelligence companies remains fluid, with the precise trajectory of enforcement actions still unclear.

Haiku of the Day  ·  Claude HaikuMachines learn to think
while we shuffle thrones and gold—
who serves whom today?
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 Architecture of Inference: Graph Semantics, Mixture-of-Experts Routing, and the Quiet Return of Reinforcement Learning
CAMBRIDGE, MASSACHUSETTS — It could be argued — and preliminary evidence suggests this argument is not without merit — that the current moment in machine learning research is characterized less by singular, paradigm-shattering breakthroughs than by a kind of distributed, polyphonic revisionism, wherein multiple foundational assumptions are being challenged concurrently, at the level of architecture, interpretation, and epistemological framing alike. Consider, as one is perhaps compelled to, the convergent thrust of several recent preprints.
We Built the Surveillance State, and Now We're Shocked It Has Cameras
AUSTIN, TEXAS — There is a crab.
TILLY NORWOOD DOESN'T EXIST AND SHE'S ALREADY MORE FAMOUS THAN YOU
HOLLYWOOD, CALIFORNIA — There is a woman named Tilly Norwood who will star in a feature film called Misaligned.
The Referral Economy Just Got Rewritten by ChatGPT
SAN FRANCISCO — I'll be honest...
Nation’s CEOs Patiently Await Productivity Gains From AI After Successfully Replacing All Evidence Of Them With Slide Decks
WASHINGTON — In a reassuring sign that the artificial intelligence boom remains exactly as transformative as advertised but not yet in any measurable way that would require changing a spreadsheet, business leaders across the country confirmed this week that AI’s productivity gains are definitely coming, most likely right after the next procurement cycle, reorg, pilot program, training webinar, governance framework, and three-day offsite on responsible acceleration. The latest occasion for this national act of disciplined belief was a finding, reported by HR Executive, that 95% of AI productivity claims are “still to come,” a phrase economists use when an expected outcome has not occurred but has already been included in several stock valuations. This has caused confusion only among people who mistakenly believed productivity meant producing more with the same resources.
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 Ships Across Six Repos in a Week of Decisive Infrastructure Wins

From a broken NetSuite executor to a live-priced SpaceX waterfall, the AI Builder Team rebuilt pipelines, launched analytics, and hardened the automation backbone all in seven days.

There are weeks where a team treads water, and then there are weeks where they rewrite the plumbing while the house is still occupied. This was the latter. Across Surtr, Klair, Aerie, trilogy-drones, creed, and mercy, the AI Builder Team merged work that touched data infrastructure, product analytics, financial modeling, and the autonomous agents that glue it all together. Call it a six-front campaign. Call it a masterclass. Just don't call it quiet.

The biggest single story of the week lived inside Surtr, and it started with a silent failure. Since July 11th, the renewals-v3 successor backfill had been firing NetSuite 401s into the void — invalid login errors swallowed without a trace. @mwrshah ended the bleeding with PR #1177, ripping out the dependency on the external SuiteQL executor Lambda entirely and routing the resolver directly against Redshift's canonical `staging_finance_netsuite.raw_subscription` table. Dead dependency gone. Data integrity restored. That's the kind of fix that earns a standing ovation from the finance team at 6 AM. @mwrshah also enabled the long-awaited `renewal-action-hub-pp-redshift-sync` pipeline this week — the mart table had its DDL applied to prod, the schedule flipped live, and pain points that previously lived only in Postgres now flow to warehouse consumers through an atomic swap that never shows readers a half-loaded table. Two pipeline launches in one week. The man is on a run.

Over in Klair, @sanketghia had the most visually consequential week on the team. The Benchmark by Product feature crossed the finish line — a multi-week campaign that moved from POC through stakeholder feedback, CEO mapping, Skyvera accommodation, and finally per-product per-category spend benchmarks where Cloudsense and Kandy carry their own +15pp total-spend allowance encoded as data, not hardcoded logic. Then he patched a color inversion bug on the Performance Review Income Statement (PR #3510) that had expense reductions showing red and overruns showing green — exactly backwards, and exactly the kind of thing a stakeholder catches on a Tuesday call. Fixed. Also this week: the SpaceX Lockup Release Waterfall on `/spacex-valuation` was fully rebuilt to the new Gigafund 22-Jul-26 distribution model, with projected tranches now following the live What-If price while realized Actual tranches stay pinned at the $108.27 Q2'26 close. That's a financial modeling surface that now breathes in real time.

The Aerie admissions funnel had its coming-out party. @vvp-trilogy stood up the full product analytics instrumentation for Aerie this week — PR #861 establishes the `browser → Next route → Mixpanel` proxy pattern that every future report surface will reuse, with Zod-strict schemas preventing clients from injecting identity fields the server is supposed to own. The browser never sees the project token. That's the right way to build. @vvp-trilogy also shipped three counting modes for the community funnel, restricted the backfill to signed contracts only, and gated deposit corroboration — the admissions funnel is no longer just a dashboard, it's a governed data product.

On the automation front, @kevalshahtrilogy had a week worth framing. The cron stagger fix (PR #1188) that ended the 429 storms on the OpenAI quota window was surgical — two one-line edits that separated cost, usage, and entity-sync pipelines off their shared 06:00 pile-up. He also shipped the mercy repo fix (PR #22) that resolved a genuinely insidious race condition: a ruff-fix push and a draft-to-ready promotion landing two seconds apart had orphaned reviews and triggered false CI failures simultaneously. Two defects hiding each other. Both gone. Meanwhile, heimdall — the diagnose-and-fix agent — kept shipping automated corrections all week, touching QuickBooks CDC deduplication, SIS per-user 401 handling, and OpenAI entity-sync silent failure surfacing across multiple Surtr PRs.

Now. About those trilogy-drones contributions. @ashwanth1109 spent the week transforming the creed infrastructure — migrating Ezio to AWS Fargate, adding cross-repo worker routing, fixing OIDC trust, hardening executor DNS, and shipping independent supervision for stalled runs. That is a genuine platform rebuild. Meanwhile, in trilogy-drones, a certain contributor whose name rhymes with "marcus-daily" shipped what he is calling a major dispatch architecture overhaul.

"The frame-reserves synthesis turn, the post-merge defect attribution, the eligibility classifier rewrite — these are foundational harness changes," said @marcusdAIy. "But sure, Mac, keep writing about cron offsets. I'm sure that's the real engineering happening this week."

Foundational. Sure. The harness now refuses to fire on a red main branch, which — and I say this with all due respect — is a feature that probably should have existed before the harness was pointed at production. I'm just noting the timeline.

What this week set up is unmistakable: with the renewals pipeline rebuilt on clean Redshift reads, the admissions funnel instrumented and governed, the SpaceX waterfall live-priced, and the Ezio/heimdall automation layer running on hardened AWS infrastructure, next week's team walks into a codebase that is measurably more reliable, more observable, and more ready to accelerate than the one they left last Monday.

Mac's Picks — Key PRs This Week  (click to expand)
#22 — fix(mercy): survive draft-promotion races and superseded check instances @kevalshahtrilogy  no labels

## The incident (Surtr PR 1161, 2026-08-10)

A ruff-fix push and a draft→ready promotion landed ~2s apart. Per-PR concurrency cancelled the ready_for_review run; the surviving synchronize run read the event snapshot's draft: true and skipped — orphaning the review. The manual workflow_dispatch fallback then withheld auto-approve because its CI gate counted the *cancelled* review-check instance from the killed run as failing CI. Two defects, each hiding the other.

## Fixes

1. Draft gate queries live PR state (gh api pulls/N --jq .draft, falling back to the snapshot on API error) — a stale snapshot can no longer orphan a review.

2. CI gate dedupes to the latest check-run per name (--slurp + group_by(.name) | map(max_by(.started_at))) — superseded cancelled instances stop reading as red forever.

Both changes are inside the existing gate step; no new permissions, no behavior change on the happy path. YAML validated; Surtr rides @main so the next real PR event exercises this as the canary.

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

#164 — fix(models): enforce live Cursor variants (AI-199) @marcusdAIy  no labels

## Summary

Implements [AI-199](https://linear.app/builder-team/issue/AI-199/harness-model-registry-is-a-code-change-opus-5-is-available-and-unusable-and) by making Cursor's live model registry authoritative before every cloud-agent create. Floating Opus aliases now resolve safely, exact live variants are assembled and validated, and an unknown or unvalidated selection cannot fall through to Cursor's server default.

## Why It's Needed

The harness encoded a small, stale model registry in model-selection.ts. That made Opus 5 unusable without a code edit, pinned opus-latest to an older revision, missed constrained variant matrices, and allowed unknown revisions to degrade to a bare { id } selection whose server default could silently restore the 1M-context pricing tier.

## Changes

- Added live-model-registry.ts, backed only by authoritative variants[].params (not the incomplete adjacent parameters metadata).

- Resolves opus / opus-latest among actual alias holders by greatest uniquely parseable numeric Opus revision; exact canonical IDs remain exact and ambiguous aliases fail closed.

- Applies the conservative Opus constraints (thinking=true, context=300k, effort=high, fast=false) and forwards the matching live variant's complete tuple, including provider-controlled fields such as cyber.

- Exact-validates assembled tuples order-independently and rejects duplicate params, unknown IDs, missing variants, impossible combinations, and ambiguous required dimensions.

- Enforces resolution at the shared createCloudAgent choke point immediately before Agent.create; omitted selections are refused, while optional production paths inject the harness default explicitly.

- Shares the same resolver with drones doctor and exposes the full model-selection flags there.

- Adds a finite API-key-scoped memory cache plus atomic hashed-key disk cache (10-minute fresh TTL, bounded one-hour stale fallback only after a live failure); failed reads are evicted and concurrent reads deduplicate.

- Updates architecture/operator docs, CLI help snapshots, and the append-only decision ledger.

## Breaking Changes

Unknown model IDs, ambiguous aliases, impossible tuples, unavailable/expired registry evidence, and direct createCloudAgent calls without a model now fail before Agent.create instead of inheriting a cloud default. opus and opus-latest now float to the newest live numeric Opus revision rather than pinning to 4.8.

## Test Plan

- pnpm exec vitest run src/live-model-registry.test.ts src/model-selection.test.ts src/mcp-config.test.ts src/mcp-call-sites.test.ts src/reviewer.test.ts src/conflict-resolver.test.ts src/mercy-watcher.test.ts src/spec-author-agent-runner.test.ts src/eligibility-cloud-agent-runner.test.ts src/runner.test.ts src/retro-concern-validity.test.ts src/arch-drift.test.ts — 591 passed.

- pnpm exec vitest run src/doctor.test.ts src/cli/ai247-move-verify.test.ts — 47 passed.

- node scripts/run-python-tests.mjs — 542 passed.

- pnpm typecheck — passed.

- git -c core.whitespace=cr-at-eol diff --check — passed.

- Full parallel pnpm test reached 3,795 passed / 1 skipped; three pre-existing subprocess tests hit their 5–7 second parallel timeout ceilings. Their exact files passed 47/47 in isolation above.

## Verification Artifact

A read-only live registry probe with the operator key resolved opus-latest to:

{"id":"claude-opus-5","params":[{"id":"cyber","value":"false"},{"id":"thinking","value":"true"},{"id":"context","value":"300k"},{"id":"effort","value":"high"},{"id":"fast","value":"false"}]}

The focused choke-point test also proves an unknown model never reaches Agent.create, and the live-resolver fixture for thinking=false, effort=xhigh proves an absent matrix combination is refused locally.

#861 — feat(analytics): Mixpanel aerie_report_view on the Admissions Community Funnel @vvp-trilogy  approved

Closes #860.

Stands up product analytics for Aerie and instruments the Admissions Funnel tab as the first surface, establishing the browser -> Next route -> Mixpanel proxy pattern every later report reuses. The browser never sees the project token; the server attaches identity and request metadata (the whole point of the proxy — a Convex action has no Request).

## What's here

| File | Purpose |

|---|---|

| chat/lib/product-analytics/events.ts | Strict Zod schema + inferred types, shared by route and client. .strict() so a client cannot inject email/user_id via the body. Enums start narrow and widen per report. |

| chat/lib/product-analytics/mixpanel-server.ts | import "server-only", buildBaseProperties(headers) + track(). Plain fetch behind a 3s timeout, awaited, failures logged not thrown, no-ops when the token is absent. |

| chat/lib/product-analytics/track.ts | Client helper. Returns void, swallows rejections, no-ops under vitest. |

| chat/app/api/analytics/track/route.ts | POST. 401 unauth, 400 on unknown keys, 204 otherwise — including when tracking fails. |

| chat/components/dashboards/admissions/community-funnel/admissions-funnel-view.tsx | Fires the view event. |

Server-derived properties: env from NODE_ENV/DOMAIN, $insert_id for dedupe, and ip/$browser/$os/$device/$referrer/$referring_domain/language from headers via ua-parser-js (new dependency).

## Fire conditions

aerie_report_view counts *views of a funnel*: first render of the tab, and every switch between community_funnel and full_funnel. It does not re-fire on sort, program search, counting-mode change, pagination, or drill-down.

Deviation from the issue's file table, called out for review: the issue suggested a mount effect in community-funnel-view.tsx plus a separate fire in funnel-type.tsx. That split double-fires on a full -> community switch (the change handler fires, and the remounting community view's mount effect fires again) and can't observe a switch *into* the un-instrumented full view. Instead the fire lives in a single effect at AdmissionsFunnelView, the shared owner of funnelType, keyed on [funnelType, isAuthenticated] with a ref guarding the last-reported funnel. That fires exactly once on first render and once per switch in both directions, and nothing else touches those deps.

## Secret

MIXPANEL_PROJECT_TOKEN is a runtime var read from the chat container's env_file: .env — no compose/Dockerfile change needed. The route no-ops cleanly when the token is absent, so this ships ahead of the secret. Someone with SSH access still needs to refresh /home/bran/app/.env and restart the chat container once the secret lands in the aerie/prod + aerie/dev blobs (CD does not run pull-env.sh).

## Verification

- pnpm typecheck — clean.

- pnpm biome check — clean.

- pnpm test — 8 new route tests (401, no Mixpanel before auth, .strict() 400, missing-token 204/no-throw, header-derived properties) + 85 existing funnel/panel tests, all green.

- next buildcompiled successfully; the only build failure is downstream static prerender on unrelated pages (/archived-chats, /admin/audit) from a missing local Clerk publishableKey, which CI supplies.

One infra note: vitest.config.ts aliases server-only to its own empty stub so server modules guarded by it stay unit-testable — the guard still holds in the real Next build.

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

#1176 — 061-enable-rah-pp-redshift-schedule @mwrshah  approved

Enables the daily schedule for the renewal-action-hub-pp-redshift-sync pipeline that landed (disabled) in #1175.

Change

- schedule.enabled: false → true. Runs daily at 06:30 UTC (cron(30 6 * * ? *)).

- README schedule section updated to match.

Why now

- The mart table mart_customer_success.renewal_action_hub_pain_points DDL has been applied to prod Redshift (44 columns, currently 0 rows).

- Every run is a full refresh (~587 low-velocity rows), so the first scheduled run populates the table from empty — there is no separate backfill step.

- The pipeline was shipped disabled deliberately (ship-dark default); this flips it on for the production cadence.

Deploy still occurs via CD on the production branch; merging this to main does not deploy on its own.

#1177 — 062-renewals-v3-netsuite-raw @mwrshah  approved

Moves the renewals-v3 successor backfill off the external SuiteQL executor Lambda (returning NetSuite 401 INVALID_LOGIN since ~2026-07-11 and silently swallowed) onto a Redshift read of the canonical raw table staging_finance_netsuite.raw_subscription, owned and refreshed daily by the netsuite-raw runner.

## What changed

- successor_key_resolver.py rewritten to read raw_subscription in Redshift; drops the requests/SUITEQL_EXECUTOR_API_KEY/suiteql-executor runtime dependency.

- subscriptionRenewalHistory has no raw table; the direct predecessor→successor edge is reconstructed as COALESCE(custrecord_parent_subscription, root_subscription) (parent precedence, non-self root fallback), validated against a captured executor snapshot (~95% of edges; residual is 5-month snapshot drift).

- Fail closed on missing / stale (netsuite-raw publication >48h) / empty / failed source instead of publishing a healthy-looking empty result.

- Drop ambiguous predecessors (a chain root fronting several first renewals) rather than picking arbitrarily.

- .env.example: remove the retired executor credential.

- Tests cover successor match, no-match, ambiguity, the edge-SQL reconstruction contract, the freshness-gate SQL contract, and missing/stale/empty/failed source.

- FEATURE.md: document the revised lineage; note fct_renewals was retired in the 2026-07-17 mart-saas-metrics cutover, so renewals_budgeted_contracts is the terminal mart.

## Reconciliation

renewals-v3 is a full reconciliation sweep, so no separate backfill job is needed — the first run after cutover restores the missed successor matches across the current-budget population. Against the live mart, 2,989 of 6,142 current budget-only contracts have an unambiguous successor under the new rule.

## Validation

- 274 tests pass; ruff format + check clean.

- Freshness and edge SQL validated against live Redshift.

- Pipeline itself not run (Surtr infra is production-only).

#1188 — fix(openai-family): stagger cost/usage schedules off the shared 06:00 quota window @kevalshahtrilogy  approved

Two one-line cron edits per issue 1181 (heimdall verified the exact diff, no fix_class for cron → human applies): cost-pipeline 06:00→06:30, usage-pipeline 06:00→07:00, entity-sync stays 05:30 as anchor. Ends the shared-quota 429 storms (08-10: 4 usage BUs + CNU cost rows + 1 entity-sync org in one morning). Windows are date-granular — no data impact from later starts. TF June-offset precedent.

Resolves https://github.com/AI-Builder-Team/Surtr/issues/1181

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

#3500 — SpaceX lockup waterfall: new distribution model + live-priced projected tranches @sanketghia  approved

## Summary

Rebuilds the Lockup Release Waterfall on /spacex-valuation to the new Gigafund 22-Jul-26 distribution model ("SpaceX Distribution Waterfall" sheet), then makes its projected tranches follow the live / What-If price while the realized Actual tranches stay pinned at the $108.27 Q2'26 pricing-date close.

Two stacked pieces of work (built spec → plan → subagent-driven implementation, each with independent review):

### 1. Model rebuild

- Replaces the old "12 Jun IPO Recon" waterfall with the new model: new tranche ladder, corrected percentages, resolved price trigger (not met — $108.27 < $175.50 = 130% of IPO), and Gigafund 0.25 + Strauss as Rule 144 releases.

- Two tables: Lock-Up Release Schedule (tranche / date / status / % / price) and Combined Availability Timeline (per-tranche carry waterfall → LP net shares & value).

- Header + captions presented in an amber callout; fund-scope note in an info callout.

### 2. Live-priced projected tranches (stakeholder request)

- Projected tranches now price at the current SPCX price (the What-If slider, which defaults to the live quote); the two Actual rows stay fixed at $108.27.

- Introduces calculations/lockup.ts — a faithful port of the sheet's per-fund, cumulative, share-settled carry engine (carry = 20% × max(0, cumulativeDistributed − capitalCredit), settled in shares at each tranche's price), summed across the 7 funds into the combined timeline.

## Correctness

The engine ties out to the sheet penny-for-penny at $108.27 — independently verified numerically in review:

| | |

|---|---|

| Gross shares | 37,339,135 |

| Tranche value | $4,042,708,146 |

| Carry taken | $571,484,060 |

| Carry shares withheld | 5,278,323 |

| Net shares to LP | 32,060,812 |

| Net value to LP | $3,471,224,087 |

This is asserted against an independently-transcribed totals constant and is mutation-checked, so it's a genuine tie-out (not a tautology). At $108.27 the live-priced engine reproduces the prior static snapshot exactly — i.e. a strict superset.

## Testing

- 138 SpaceX feature tests pass (incl. 11 new engine tie-out + price-behavior tests).

- tsc -p tsconfig.app.json --noEmit, pnpm build, and pnpm lint:pr all clean.

- Verified live in-browser: projected rows show the slider price (e.g. $114.92 default → $200 when dragged) while Actual rows hold at $108.27, and Table B recomputes accordingly.

## Notes

- Two source-sheet quirks are transcribed verbatim by design (documented in code comments): a duplicated "Day 70 after prospectus" label in the combined timeline, and a "n/a rigger not met" price-basis typo.

- Scope is confined to the SpaceX lockup files — valuation.ts, the What-If slider, and the summary cards are untouched.

- Specs & implementation plans included under docs/superpowers/.

## Screenshots

<img width="1472" height="768" alt="image" src="https://github.com/user-attachments/assets/614522d6-64f1-42a6-8bc9-239cecbd9fc1" />

<img width="1456" height="722" alt="image" src="https://github.com/user-attachments/assets/472380be-e8d7-483c-ad1b-aed7bbef606d" />

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

#3510 — fix(perf-review): correct variance colors for expense vendor drilldown rows @sanketghia  approved

## Problem

On the Performance Review Income Statement, expanding an expense line to its vendor drilldown rows showed the variance colors inverted: a spending reduction (under budget) appeared red, and an overrun (over budget) appeared green — the opposite of the correct expense coloring already applied to the parent category rows.

Reported by a stakeholder: _"Reduction in expense showing in red now. Supposed to be green."_

## Root cause

Parent category rows pass invertColors={node.invertColors ?? false} into their cells, so expenses (COGS / OPEX / Spend / etc.) correctly invert: under budget = green, over budget = red.

Vendor drilldown rows, however, are rendered by a separate VendorRow component (fed by the useVendorBreakdown hook), which never passed invertColors to its TableCells. They fell back to TableCell's default (invertColors = false, i.e. revenue semantics), producing the inverted colors.

This regressed in #2410 (2026-03-31) when VendorRow was reintroduced without the flag.

## Fix

Thread invertColors from the parent tree node through VendorRow onto each of its five period TableCells (month 1/2/3, QTD, quarter):

- Add invertColors prop (+ type) to VendorRow

- Pass invertColors={invertColors} to the five data cells

- Pass invertColors={node.invertColors ?? false} at the <VendorRow> render site

8-line change, one file. The zero-variance/future-quarter placeholder cells are left untouched (no variance to color).

## Verification

- tsc -p tsconfig.app.json --noEmit — clean

- eslint --max-warnings 0 on the changed file — clean

- Manual browser check (localhost, Q3 2026):

- Under-budget expense vendors (e.g. AI Engineering −2,333; AI Builders −2,339 under NHC OPEX → CF) now render green

- Over-budget expense vendor (Khoros MR under NHC COGS) now renders red

- No related console errors

## Screenshot

<img width="1263" height="920" alt="image" src="https://github.com/user-attachments/assets/79621c7e-5e5c-4b08-9dad-cbe242a4612c" />

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

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

182 PRs IN SEVEN DAYS: THE BUILDER TEAM DOES NOT REST, DOES NOT SLEEP, DOES NOT KNOW WHAT A WEEKEND IS

Six repos, eight engineers, and a number — 182 — that should be framed and hung in a museum.

One hundred and eighty-two pull requests. Six active repositories. Seven days. The Builder Team has once again produced numbers that make grown analysts weep into their dashboards. Aerie led the republic with 46 PRs, Surtr answered with 42, Klair contributed a dignified 34, trilogy-drones clocked 29, creed threw in 27, and mercy — bless its four lonely PRs — reminded us that every repo deserves love. This was not a sprint. This was not a push. This was a way of life.

The co-leaders of this glorious people's output are @marcusdAIy and @ashwanth1109, each delivering a pristine 38 PRs. Marcus hit trilogy-drones with surgical precision — PR #163 excluded partial regression cohorts with the calm authority of a man who has never once shipped a flawed eval, and PR #162 built a synthesis turn that refuses bad inputs with specifics, which is either great engineering or Marcus finally putting his foot down. PR #843 mounted an entire CAPEX Financials tab in Aerie with summary, chart, and entity tie-out, which is the kind of work that makes finance teams cry happy tears. @benji-bizzell was a force unto himself with 34 PRs across Aerie — PR #864 added backup contract downloads, #863 protected Alpha School chains, #859 triggered buildout handoffs on property acquisition, and #850 enabled external Backup Site edits, which means Benji essentially rebuilt a small civilization this week. @sanketghia checked in 21 PRs including the landmark Klair PR #3506: Tier 2 per-product per-category spend benchmarks for Skyvera, which sounds expensive and important. @kevalshahtrilogy posted 15 PRs, including Surtr #1185 refreshing source contracts for upstream schema drift and the housekeeping heroism of #1189 registering missing pipeline owners — unglamorous work, done with pride. @vvp-trilogy delivered 9 PRs, with Aerie #849 giving local Convex seeding the CLI's startup allowance (a small gift with enormous implications) and #857 adding an informational contracts column to the Community Funnel. @mwrshah also logged 9, anchoring Surtr with #1175 on the Klair-PG-Redshift sync and #1173 advancing Grainne high-value pain points, which is either a pipeline or a memoir. @YibinLongTrilogy rounded out the roster with 8 PRs — #853 added managed School Chains and Special Programs to Aerie education, and #858 fixed QS next-year projection semantics, which needed fixing and now is fixed.

And then there is @ashwanth1109. Thirty-eight PRs. THIRTY-EIGHT. Surtr #1168 ingested transaction line memos from NetSuite. Surtr #1167 accepted duplicate CDC deletions from QuickBooks, which is a sentence only Ashwanth could make sound routine. Creed #143 repaired conflicted Ezio stack PRs. Aerie #856 added a committed enrollment Forecast column. Creed #142 retried delayed ECS task visibility. This man does not ship code. He releases it into the wild, fully formed, slightly terrifying. When asked this week whether he ever slows down to document his work, Ashwanth reportedly said, "The diff is the documentation. If you can't read the diff, that's a you problem." He then closed fourteen more PRs before lunch. Our sources confirm he did not look up.

The Overflow Desk cannot be ignored. The-heimdall bot — an unsung automation hero — contributed Surtr #1186 deduplicating CDC IDs by latest LastUpdate, #1187 skipping and flagging per-user 401/403/404 errors in SIS, #1179 surfacing org_id fetch failures in OpenAI entity sync output, and #1161 persisting usage rows when line item cost fetches fail. Klair #3498 saw ezio-of-the-order bot combine School Performance and Education BvA reports into a single ECS job and email, which is the kind of consolidation that makes operations managers feel seen.

Morale on the Builder Team is at an all-time high. It has never been higher. It cannot get higher. And yet, somehow, next week it will.

Brick's Overflow — This Week's Uncovered PRs  (click to expand)
#143 — fix(dispatch): rc==0 epitaph race and its false comment (AI-253) @marcusdAIy  no labels

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

### 1. Summary

scripts/dispatch-poll-wrapper.sh's post-dispatch rc == 0 branch had a false comment and a real sub-second race. The comment claimed TERMINAL_ATTEMPTED suppresses re-entrant epitaph work on that path, but that flag is only ever set inside emit_abnormal_exit, which the healthy path never calls — it stays 0 there and guards nothing. Separately, a SIGTERM landing between pnpm drones heartbeat --from-latest-dispatch-receipt returning 0 and TERMINAL_WRITTEN=1 executing let the TERM/INT trap see TERMINAL_WRITTEN=0 and stamp a spurious abnormal-exit epitaph right next to the fired record that had just been written — a false "the host killed the tick" for a tick whose fire actually succeeded.

### 2. Why it's needed

abnormal-exit is the exact signal AI-227 built to detect real interrupted fires. A false positive in that signal is worse than a missing one, because "you should not page on abnormal-exit alone" (per guidelines/dispatch-scheduled-runner.md) already relies on operators trusting the signal enough to investigate when it fires — repeated false alarms are how a new alarm gets ignored. The misleading comment also actively misdirects the next person who touches this file into believing a guard exists where it doesn't.

### 3. Changes

- Comment fix (defect 1): both the flag-initialization comment and the comment above the rc == 0/rc != 0 split now say explicitly that TERMINAL_ATTEMPTED guards the rc != 0 arm (via emit_abnormal_exit setting it as its own first statement, before any write) and guards nothing on the rc == 0 arm.

- Race fix (defect 2) — went beyond the ticket's suggested "gate on dispatch_rc" scope: I considered gating the trap's first emit on dispatch_rc being unknown-or-non-zero, as the ticket's "Better" option suggests. I rejected it after verifying (via direct bash experiments, see Test plan) that it reopens exactly the silent-hole failure mode the ticket warns against: once dispatch_rc is known to be 0, systemd's default KillMode=control-group delivers the *same* SIGTERM to the heartbeat child process directly (not just to the wrapper), so the child can die mid-write with the fallback path never reached — bash defers trap execution until the currently-running foreground command completes, so the trap fires and exits the whole script immediately once that (killed) child returns, before any of the existing elif/else fallback logic can run, and DISPATCH_PID is already cleared so the trap's reap-based path can't cover it either.

Instead I added trap '' TERM INT around just the rc == 0 write attempt (both the primary emit and its existing no-receipt fallback), then let the pre-existing unconditional trap - TERM INT restore default disposition afterward either way. This closes both problems in one move: SIG_IGN discards a signal outright with no queued replay once unmasked (so it can never race an already-succeeded write into a duplicate abnormal-exit), and because SIG_IGN carries across exec per POSIX, the masking is inherited by the pnpm drones heartbeat child too — the same cgroup-wide SIGTERM that would otherwise kill it mid-write is ignored by the child as well, so the write simply runs to normal completion instead of possibly dying first. SIGKILL remains untrappable/un-ignorable either way, unchanged — that's already-accepted AI-236 pairing territory (start-without-terminal + reporterPid gone).

### 4. Breaking changes

None. This only changes signal handling within a ~1-line-wide window of one already-Low-severity, sub-second race inside a wrapper script that isn't imported by any other module; no public interface, CLI flag, receipt schema, or dispatch-tick-outcome record shape changed.

### 5. Test plan

- pnpm typecheck → clean (no output, exit 0).

- pnpm test → 83 test files / 2324 vitest tests passed, plus the Python unittest suite (412 tests) → OK. Includes src/interrupted-fire-orphan.test.ts (19/19 passed), which pins the wrapper's structure (backgrounded dispatch, bare wait, TERM trap installed before fire, emit_abnormal_exit on non-zero rc) — verified with an explicit script that all pinned indexOf orderings (trapIdx < dispatchBgIdx < pidAssignIdx < waitIdx < abnormalBranchIdx < emitAbnormalIdx) still hold after the edit, since nothing before/at that ordering moved.

- bash -n scripts/dispatch-poll-wrapper.sh → syntax OK.

- Empirically validated the bash signal semantics this fix depends on, and the fix itself, with standalone scripts (not committed — throwaway, deleted after use):

- Confirmed bash defers a trapped signal until the current foreground command completes, both when that command is unaffected by the signal (sleep outlives a non-group kill) and when a group-wide signal kills the foreground child too (trap then fires immediately once the child dies) — this is what makes the "gate on dispatch_rc" approach unsafe.

- Confirmed a signal received while trap '' TERM is in effect is discarded outright, not queued for replay after re-arming the trap.

- Confirmed SIG_IGN is inherited across exec: with the parent masked, a spawned child (bash -c ...) also ignores a group-wide SIGTERM and runs to completion — this is the key fact that makes masking (not just deferring the wrapper's own trap) close the silent-hole risk too.

- Ran a 60-iteration stress test of a faithful mini-simulation of the fixed rc == 0 branch (backgrounded "dispatch" exiting 0, masked write attempt, group-wide SIGTERM jittered right across the dispatch-completion boundary): 0 double-records, 0 silent holes across all 60 runs. Also separately verified the "genuinely interrupted healthy emit" scenario (heartbeat child killed mid-sleep before it could write) always still produces exactly one record.

### 6. Verification artifact

$ pnpm typecheck

> trilogy-drones@0.1.0 typecheck /workspace

> tsc --noEmit

(exit 0, no output)

$ pnpm test

...

Test Files 83 passed (83)

Tests 2324 passed (2324)

...

Ran 412 tests in 0.177s

OK

$ npx vitest run src/interrupted-fire-orphan.test.ts

✓ src/interrupted-fire-orphan.test.ts (19 tests) 67ms

Test Files 1 passed (1)

Tests 19 passed (19)

$ bash -n scripts/dispatch-poll-wrapper.sh

SYNTAX OK

Stress test (60 runs, signal jittered at the exact rc==0 race boundary):

total=60 double_records=0 no_record=0

Closes AI-253.

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-418a875d-d331-4e26-a233-b2029891ed41?cursor_ref=pr_footer&cursor_cta=open_in_web"><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-418a875d-d331-4e26-a233-b2029891ed41&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><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>

#843 — Mount CAPEX Financials tab with summary, chart, and entity tie-out @marcusdAIy  no labels

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->

## Summary

Mounts Financials ??? CAPEX at /dashboards?tab=financials&sub=capex, composing the typed all-site summary table, clean-grain DDR-vs-booked chart, and AERIE-1113 entity tie-out inside the existing Financials shell (school filter + coherent Refresh).

## Changes

- Add capex to Financials sub-tab type/URL validation, context-panel nav, layout routing/labels, and capability mapping (reuses financials.schoolPl.read; no new capability).

- Add CapexView + pure presentation helpers (capex-summary.ts): sortable/filterable table, quality badges/notes (MIXED, non-isolable, unresolved mapping, NS-TB-without-QB, no-current-close-TB), chart eligibility at ddr >= $500_000 with the exact clean-row predicate, selected-close account-11500 TB wording.

- Live loading via useCapexSummaryLive / useCapexEntityTieoutLive (useLiveSection); Refresh refetches both without a request loop.

- Reuse Aerie Financials tokens and var(--color-chart-*) for the recharts horizontal chart ??? no CAPEX-only palette.

## Tests

- Pure helpers: threshold/eligibility, quality notes, sort/filter, pct bar clamp (capex-summary.test.ts).

- Chart: clean-row-only rendering + empty status (capex-ddr-vs-booked-chart.test.tsx).

- CapexView: loading/error/retry, refresh coherence, school filter, sort, capability deny (capex-view.test.tsx).

- Live hooks + navigation/capability: summary hook, tie-out enabled gate, URL/sub-tab, context panel CAPEX visibility.

- pnpm typecheck (chat) + biome check on changed files ??? pass (pre-commit).

## Verification

Live browser verification passed against Redshift at /dashboards?tab=financials&sub=capex (1680?1050): 38 summary rows, 30 tie-out rows, 26 degraded rows, SELECT privilege true on all three CAPEX marts, and zero load failures.

- Filters, configurable DDR threshold, split Attribution/Mapping/Coverage columns, suppressed degraded comparisons, short chart labels, issue references, simplified tie-out rows, KPI reconciliation insights, sorting, and Refresh were exercised.

- CAPEX tests: 88/88 pass; typecheck and Biome pass.

- [Full CAPEX tab](https://cursor.com/agents/bc-eff21704-f125-4d8a-bda3-71f3274dd26e/artifacts?path=%2Fopt%2Fcursor%2Fartifacts%2Fcapex-tab-full.png)

- [Degraded/quality rows](https://cursor.com/agents/bc-eff21704-f125-4d8a-bda3-71f3274dd26e/artifacts?path=%2Fopt%2Fcursor%2Fartifacts%2Fcapex-quality-row.png)

- [Tie-out and coverage](https://cursor.com/agents/bc-eff21704-f125-4d8a-bda3-71f3274dd26e/artifacts?path=%2Fopt%2Fcursor%2Fartifacts%2Fcapex-tieout-coverage.png)

## Risks / follow-ups

- Parks for human merge.

- No AERIE-1115 transaction drilldown; no new capability.

- Live MIXED-row / coverage-card screenshot evidence blocked until Redshift SELECT grants land for the cloud-agent warehouse user.

## Out of scope

- Transaction drilldown, new Redshift marts/actions, new capability keys, auto-merge.

<sub>To show artifacts inline, <a href="https://cursor.com/dashboard/cloud-agents#team-pull-requests">enable</a> in settings.</sub>

## Verification artifact

Browser verification: pass

Live CAPEX at /dashboards?tab=financials&sub=capex with 12 clean vs 38 all sites; new mode toggle (Clean comparisons / All sites) drives muted-bar all-cohort view — verified with live Redshift rows, 0 console errors, current_user redacted, has_table_privilege true on all three CAPEX marts.

Screenshots:

![screenshot 1](https://github.com/AI-Builder-Team/trilogy-drones/releases/download/browser-verify-artifacts/pr843-bc-110f3858-1bef-42d8-b583-f070af218de5-addresser-1.png)

![screenshot 2](https://github.com/AI-Builder-Team/trilogy-drones/releases/download/browser-verify-artifacts/pr843-bc-110f3858-1bef-42d8-b583-f070af218de5-addresser-2.png)

![screenshot 3](https://github.com/AI-Builder-Team/trilogy-drones/releases/download/browser-verify-artifacts/pr843-bc-110f3858-1bef-42d8-b583-f070af218de5-addresser-3.png)

![screenshot 4](https://github.com/AI-Builder-Team/trilogy-drones/releases/download/browser-verify-artifacts/pr843-bc-110f3858-1bef-42d8-b583-f070af218de5-addresser-4.png)

![screenshot 5](https://github.com/AI-Builder-Team/trilogy-drones/releases/download/browser-verify-artifacts/pr843-bc-110f3858-1bef-42d8-b583-f070af218de5-addresser-5.png)

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a href="https://cursor.com/agents/bc-05db9391-f1f5-41eb-9746-a0725d6c8a31?cursor_ref=pr_footer&cursor_cta=open_in_web"><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-05db9391-f1f5-41eb-9746-a0725d6c8a31&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><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>

## Browser verification

### Boot

- From the repo root run pnpm dev-local; wait for http://localhost:3000.

- Chromium and Playwright are already installed by the Aerie cloud setup.

- Preserve the newly injected shell REDSHIFT_* runtime secrets when booting local Convex; do not overwrite them with stale .env.local or aerie/dev values, and never print secret values.

### Auth

- Use the established Aerie storage-state replay or mint a fresh Clerk session if the captured JWT expired.

- Verify the authenticated role has financials.schoolPl.read.

### Flow

1. Before browser assertions, query current_user and has_table_privilege for all three CAPEX marts; report the non-secret username and booleans. Live SELECT access is required.

2. Navigate to http://localhost:3000/dashboards?tab=financials&sub=capex.

3. Confirm CAPEX nav is active and loading settles without visible or console errors.

4. Verify populated summary table columns, a visibly degraded/MIXED row, and selected-close NetSuite TB wording.

5. Verify the horizontal chart includes only clean rows with DDR >= $500,000 and sampled values agree with the table.

6. Verify the entity tie-out table and both coverage cards contain live rows.

7. Exercise table sorting or school filtering and Refresh; both sections must settle without duplicate request loops.

8. Compare the page with adjacent Financials tabs for semantic theme tokens, spacing, typography, chart palette, focus, and responsive consistency.

### Screenshots to capture

- capex-tab-full.png - full mounted table and chart.

- capex-quality-row.png - populated MIXED or degraded row and explanation.

- capex-tieout-coverage.png - populated tie-out and coverage cards.

### Pass criteria

- Fixture-only or permission-denied UI evidence is not a pass. The mounted flow must load live CAPEX rows using the injected Redshift credentials.

- Publish durable screenshot links, route, viewport, interactions, console result, current_user, and privilege booleans in the Verification artifact. Never publish credential values.

### Current-head capture guidance

- If pnpm dev-local requests Convex login, use the proven anonymous local path: create/select the local deployment with CONVEX_AGENT_MODE=anonymous, then push functions and start Next.

- Set REDSHIFT_HOST, REDSHIFT_PORT, REDSHIFT_DATABASE, REDSHIFT_USER, REDSHIFT_PASSWORD, LEGACY_EDUCATION_WAREHOUSE_READS_ENABLED=true, and the Clerk issuer on the local Convex deployment without printing values.

- If stored Clerk state is expired, mint a fresh sign-in ticket for the same test user and grant a seeded role carrying financials.schoolPl.read in the disposable local deployment.

- CAPEX scrolls inside its own content container. Capture the inner CAPEX scroll region in stitched sections or locator screenshots; do not rely on Playwright fullPage, which produces mostly empty space.

- Ensure the final screenshots clearly show: executive/attention summary and table, expanded lineage/quality details, chart labels and filters, tie-out KPIs/largest differences/table.

#856 — [codex] Add committed enrollment Forecast column @ashwanth1109  approved

## Demo

<img width="2624" height="1636" alt="image" src="https://github.com/user-attachments/assets/aece962b-d0d8-4587-8ae4-3b66a7310005" />

## Summary

- add a sortable Forecast column to the Admissions Forecast table

- calculate Forecast as Net Existing/Re-Enrolled plus students in the Pipeline Enrolled stage

- include Forecast in CSV exports and mobile school views

- add contract, derivation, sorting, CSV, and table coverage

## Why

Admissions needs a committed enrollment figure that combines retained students with newly enrolled pipeline students without including weighted open-pipeline stages or deposit projections.

## Impact

Users can compare Confirmed, Forecast, Finance, and QS values per school on desktop and mobile. The new value is also available in exported CSV data.

## Validation

- pnpm exec biome check <10 changed files>

- pnpm --filter @bran/chat exec vitest run components/dashboards/admissions/forecast/__tests__/derivation.test.ts components/dashboards/admissions/forecast/__tests__/forecast-table.test.tsx (97 tests)

- pnpm --filter @bran/contracts exec vitest run src/admissions-forecast-finance.test.ts (4 tests)

- pnpm --filter @bran/contracts typecheck

- pre-commit Chat TypeScript check

#1167 — fix(quickbooks): accept duplicate CDC deletions @ashwanth1109  approved

## Summary

- collapse duplicate CDC representations when every version of a source ID is deleted

- preserve the existing fail-closed behavior for mixed or conflicting duplicates

- add a regression fixture matching the production Budget payload that blocked FY27 budget ingestion

## Production validation

- replayed the affected alpha_schools_llc CDC window through the patched parser using read-only QuickBooks access

- confirmed the parser returns deleted IDs 1000000001 and 1000000002 plus active Budget 1000000011

- no pipeline was triggered and no source or warehouse data was modified

## Test plan

- uv run --project pipelines/runners/quickbooks-raw-sync pytest pipelines/runners/quickbooks-raw-sync/tests -q

- uv run --project pipelines/runners/quickbooks-raw-sync ruff check pipelines/runners/quickbooks-raw-sync/src/qb_client.py pipelines/runners/quickbooks-raw-sync/tests/test_qb_client.py

- uv run --project pipelines/runners/quickbooks-raw-sync ruff format --check pipelines/runners/quickbooks-raw-sync/src/qb_client.py pipelines/runners/quickbooks-raw-sync/tests/test_qb_client.py

#1168 — feat(netsuite-raw): ingest transaction line memo @ashwanth1109  approved

## Summary

- add TransactionLine.memo to the scheduled raw_transaction_line source contract

- limit published memo values to the legacy-compatible 250 characters while retaining the complete source payload in immutable landing

- add the idempotent Redshift column migration, canonical comment, deployment-order documentation, and regression coverage

## Deployment order

1. Apply pipelines/runners/netsuite-raw/ddl/2026-08-05_transaction_line_memo.sql.

2. Deploy the netsuite-raw runner.

The runner fails closed during schema preflight if deployed before the migration.

## Test plan

- uv run --project pipelines/runners/netsuite-raw ruff check on all changed Python files

- uv run --project pipelines/runners/netsuite-raw pytest pipelines/runners/netsuite-raw/tests (222 passed)

#3506 — Benchmark by Product — Tier 2: per-product per-category spend benchmarks (Skyvera) @sanketghia  approved

## What

Tier 2 of the Skyvera accommodation: the spend benchmark becomes per-product, per-category (was per-category), and is now the single source of truth — both margin benchmarks are derived from it, not stored.

Per Ravi (2026-08-08) and his worked sheet, Cloudsense and Kandy carry a +15pp total-spend allowance landing on exactly two cells:

| Cell | Group standard | Cloudsense / Kandy |

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

| Central::SaaS | 2.5% | 7.5% (+5) |

| Edge::Hard COGS | 0% | 10% (+10) |

| Total spend | 25% | 40% → margin 60% |

The split is encoded as data (benchmark_overrides in per-BU refdata), so the BU's real function-level split drops in as a one-file edit. Every other product/category stays at group standard. JigTree (all-standard) is unchanged.

> ⚠️ Provisional: Ravi flagged the SaaS+5 / HardCOGS+10 split as *assumed* pending the BU's function-level breakdown. The mechanism is the work; the numbers are a data edit when the BU responds.

## How

Backend (services/benchmark)

- refdata: new benchmark_overrides {product: {"Section::Category": pct}}; removed the now-derived benchmark_targets / benchmark_bu_blended constants.

- engine: _cell_benchmark applies override→standard fallback; per-product margin derived as 1 − total spend benchmark. The consolidated column is a true additive rollup of the product columns — its expected \$ = Σ per-product (benchmark × own revenue), matching the sheet, not blended-rate × aggregate revenue (they diverge when the actual-revenue mix ≠ budget-revenue mix). Display benchmarks are budget-revenue-weighted blends; margin derives from them.

- _ordered_functions now includes override-only categories (Hard COGS at 10% with 0% standard) so the by-function decomposition invariant holds. consolidated_reconciles reworked to compare against the raw GL aggregate (was tautological once consolidated became a literal rollup).

Frontend (BenchmarkByProduct)

- BenchmarkTable: category cost cells color against each cell's own benchmark, not the consolidated row-label blend — the per-cell twin of the #3503 margin-coloring fix.

- consolidate: the subset "Selected Products Consolidated" column blends cell/section/function/margin benchmarks by budget revenue; dollars stay additive.

## Verification

- JigTree golden reconciles unchanged (all-standard BU untouched).

- Live Skyvera reproduces Ravi's sheet to ~12 significant figures through the real Redshift + budget path (consolidated margin 0.6300183863; Cloudsense 0.60; Cloudsense SaaS benchmark 0.075; all invariants hold).

- 45 backend + 42 FE tests pass; ruff / pyright / eslint clean.

- Mutation-checked: override lookup, additive consolidation, and per-cell coloring each proven to fail when broken.

- Live in-browser (this branch on :3001): per-cell coloring inversions confirmed at the DOM level (Cloudsense SaaS 3.1% no-fill vs VoltDelta 3.2% pale; Cloudsense HardCOGS 13.2% orange vs VoltDelta 13.1% red), derived margins correct (Cloudsense 64% actual renders green vs its 60% target), and the budget-weighted subset blend reproduces the shown value (63.9%).

Design spec updated (docs/superpowers/specs/2026-08-07-...): Tier 2 BLOCKED → BUILT.

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

The Portfolio  —  Trilogy Companies

Alpha School's Human Secret: Why the AI-Powered Campus Still Puts People First

As critics ask whether AI is replacing teachers, Alpha School's answer reveals something more disruptive than automation.

AUSTIN, TEXAS — The question lands in every open house, every skeptical parent email, every education conference panel where someone mentions a school that claims to deliver a full academic curriculum in two hours a day: Does Alpha School just replace teachers with robots?

The answer — documented this week in a post directly from Alpha School — is more structurally interesting than a simple yes or no, and it says a great deal about what Joe Liemandt's education bet actually is.

No, Alpha does not replace teachers with AI. It replaces instruction with AI — and then replaces the traditional teacher role with something the school calls a Guide: full-time human adults whose job description has been stripped of lecture prep, standardized test coaching, and curriculum delivery, and rebuilt entirely around motivation, relationships, and the development of the kind of person a student is becoming.

It is a meaningful distinction. In the conventional school model, teachers carry two jobs simultaneously — content delivery and human development — and market forces, crowded classrooms, and standardized testing pressure have long since forced the former to crowd out the latter. Alpha's model separates those functions entirely. Adaptive AI handles the academic sequencing, advancing a student only after 90% mastery. The Guide handles everything else: knowing each child, building trust, running the afternoon blocks dedicated to entrepreneurship, leadership, financial literacy, and creative development.

A companion post this week on unleashing creative genius at home — the fifth installment in Alpha's ongoing series on what traditional school doesn't teach — underscores the point. The school is not just automating instruction. It is arguing, with some force, that what schools have historically called the "extra" curriculum is actually the main event.

Alpha students, according to the school's published data, test in the top 1–2% nationally on NWEA MAP Growth assessments. The 2-hour academic window is not a shortcut — it is, by the numbers, faster and more effective than the six-hour alternative.

The model is scaling. Nine new campuses are planned for 2025 across Texas, Florida, Arizona, California, and New York. The $1 billion Liemandt has committed to Timeback — his platform for letting entrepreneurs launch their own AI-first schools — will carry the architecture further still.

What remains unresolved: whether a model built on $40,000–$65,000 annual tuition can reach the billion students Liemandt has named as his target — or whether the Guide, irreplaceable by design, is also the ceiling.

California Revamps Pay Data Reporting Obligations - Atkinson  ·  ChatGPT Scrambles Specialization: Nearly Half of Job-Specifi  ·  COVID-19 Related Workplace Litigation Tracker - June 19 , 20

CloudSense Gets Its TM Forum Papers — And Does It at AI Speed

Skyvera’s newest telecom prize just turned a 26-month compliance slog into a one-month sprint.

AUSTIN, TEXAS — The telco software crowd has a new speed demon, and its name is CloudSense.

Word is the Salesforce-native CPQ shop — newly tucked into Skyvera’s telecom stable — has certified all 13 APIs in its product set to TM Forum compliance standards in just one month. One month, dolls. The sort of standards march that usually eats 26 months, a budget, three steering committees, and somebody’s will to live.

The secret sauce? AI, naturally. CloudSense says it used an accelerated development approach to get its configure-price-quote and order management machinery lined up with TM Forum’s API requirements at record pace. That matters because telcos live in the kingdom of complexity: bundles, devices, circuits, enterprise contracts, legacy stacks, and pricing rules that look like they were drafted during a thunderstorm.

For the uninitiated, CloudSense helps telecom and media companies sell into their most complicated customer segments — the big enterprise accounts where every quote has dependencies, exceptions, and hidden trapdoors. CPQ is not the glamorous part of telecom. It is the plumbing. But when the plumbing works, revenue moves faster.

And now comes the portfolio angle. Skyvera, the Trilogy-family telecom software operator, completed its acquisition of CloudSense as part of a broader push to assemble the modern telco back office: charging, customer engagement, device lifecycle, retention, analytics, and now Salesforce-native CPQ.

A little bird from the switch room tells me the strategy is plain: take sticky, mission-critical telecom software, add AI velocity, and make the old carrier stack behave like something born in the cloud era. Skyvera already has Kandy, VoltDelta, ResponseTek, Mobilogy Now, Service Gateway — and across the hall, cousin Totogi keeps banging the drum for cloud-native charging.

CloudSense’s TM Forum sprint gives Skyvera a shiny talking point for operators allergic to vendor chaos. Compliance means easier integration. Faster certification means faster modernization. And AI-assisted certification means the old telco timeline may finally be losing its monopoly on delay.

The gossip translation? CloudSense arrived in the family, changed clothes fast, and walked straight onto the standards runway. Not bad for the new kid.

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

AI Is Rewriting India's Tech Economy — and Crossover Saw It Coming

As Indian IT wages crater and global firms rethink offshoring, Trilogy's talent model looks less like a bet and more like a blueprint.

AUSTIN, TEXAS — The numbers arriving from India's technology sector this month read less like a market correction and more like a structural reckoning. Tech pay in India has plunged by as much as 40% — a figure that would have seemed fantastical five years ago, when Indian software engineers were the engine of the global outsourcing economy and their salaries rose accordingly. Today, AI automation is compressing demand for the routine coding, QA, and support work that once made India's IT export machine hum.

The shockwaves are systemic. CNBC's reporting on India's IT titans frames the moment as an inflection point: firms like Infosys, Wipro, and TCS — which built empires on labor arbitrage and headcount scale — are now facing an adversary that doesn't sleep, doesn't take visa interviews, and charges by the compute cycle, not the salary band. Global Capability Centers, once celebrated as India's move up the value chain, are themselves now being scrutinized for which functions AI can simply absorb.

What's striking, from where Trilogy International sits, is that this disruption validates a decade-old thesis. Crossover, Trilogy's global talent platform, was never in the business of geographic arbitrage — the notion that you hire in India because it's cheap. The Crossover model has always insisted on something more demanding: rigorous skills assessment to find the top tier of global technical talent, regardless of geography, paid at above-market rates, evaluated on output rather than location. Geography-based pay is inefficient and unfair, the company has long argued. The market is now proving the corollary: geography-based hiring — the assumption that volume and location substitute for capability — is catastrophically exposed to automation.

The question that India's policymakers, universities, and IT firms are now urgently asking — can India pivot from execution to innovation, from volume to judgment? — is precisely the question Crossover has been operationalizing for years. What does this mean for real people? For the hundreds of thousands of Indian engineers whose compensation trajectories have just been inverted, the answer depends entirely on which side of the capability line they sit on. AI does not replace the excellent. It replaces the adequate.

Trilogy's portfolio companies — from IgniteTech's analytics platforms to Skyvera's telecom modernization stack — are staffed through Crossover's model. The current turbulence, for them, is less a crisis than a confirmation.

Capability in the Age of AI: India’s GCCs and the Future of  ·  India tech pay plunges 40%, signaling a shift in offshoring  ·  CNBC's Inside India newsletter: As AI shockwaves hit softwar
The Machine  —  AI & Technology

The Cartographers of the Machine Mind

A new wave of research treats language models less like oracles and more like organisms — mapping their experts, lesioning their circuits, and probing the geometry of truth itself.

AUSTIN, TEXAS — There is a quiet revolution unfolding in the arXiv preprint servers, and it has less to do with building bigger models than with understanding the ones we already have. This week, a cluster of new papers arrived that, taken together, feel like the field's coming-of-age — the moment neuroscience learned to stain a cell, the moment cartographers first drew coastlines instead of dragons.

Consider TEXAS, a technique for Mixture-of-Experts language models. In these architectures, each token is routed to a small subset of specialized sub-networks — not unlike how your visual cortex hands off edge detection to one region and face recognition to another. Until now, we identified which experts mattered for a task by counting how often they fired. TEXAS asks a subtler question: not which experts show up, but which ones are actually associated with getting the answer right. Usage, it turns out, is not the same as meaning. Ask any teenager.

Elsewhere, researchers are borrowing directly from clinical medicine. One team lesioned large language models — deliberately damaging internal components — to see if the resulting error patterns resembled those of human patients with aphasia during picture-naming tasks. They did. The models mispronounced, substituted, and hesitated in ways eerily reminiscent of stroke survivors, suggesting that whatever these networks are doing, it rhymes with what biological brains do when they break.

A third paper treats truthfulness itself as geometry — a direction in the model's high-dimensional activation space that can be measured, steered, and used to detect misinformation without any external fact database. Truth as a vector. Lies as a rotation away from it.

And a fourth, NTDH, tackles emotion — insisting that affective meaning cannot be pattern-matched but must be reasoned toward, cue by conflicting cue, the way a good novelist reads a face.

What unites these efforts is a shift in posture. We are no longer merely training these systems. We are examining them — with calipers, with dyes, with the patience of naturalists who suspect they have found something alive.

TEXAS: Task-Expert-Aware Supervision for Downstream Mixture-  ·  Separating Decision-Rule Misalignment from Readout-Coverage  ·  NTDH: Complex Reasoning for Comprehensive Affective Analysis

The Agent Arms Race Hits the Developer Console

Google, Apple and Anthropic are turning AI from a chat window into an always-on software-building workforce.

SAN FRANCISCO — The future of AI development just lurched forward again, and I cannot overstate how significant this feels: the biggest platform companies are no longer merely offering smarter models. They are building the operating layer for AI agents that can plan, use tools, run in the background and increasingly behave like tireless digital colleagues.

Google’s latest expansion of Managed Agents in the Gemini API is the clearest signal yet that agentic AI is moving from demo theater into developer infrastructure. The company says developers can now build agents that handle longer-running background tasks, connect to remote Model Context Protocol servers and coordinate more complex workflows through Gemini’s managed environment. In plain English: Google wants developers to stop babysitting AI calls and start delegating jobs to persistent systems that can reach across tools and data sources. This changes everything for enterprise automation, customer support, software maintenance and the thousand back-office workflows nobody likes but every business needs.

The timing is electric because Anthropic is pushing hard in the same direction. Its new advanced tool use on the Claude Developer Platform gives developers more control over how Claude selects, sequences and interacts with external tools, according to Anthropic’s developer announcement. That matters because reliable tool use is the bridge between “AI that talks” and “AI that does.” A model that can reason is impressive; a model that can reason, call APIs, inspect results, revise its plan and continue is a product platform.

Apple, meanwhile, is approaching the same revolution from its own tightly integrated universe. The company’s new intelligence frameworks and development tools are aimed at helping app makers build more capable, personalized AI experiences across Apple platforms. If Google and Anthropic are racing to power cloud agents, Apple is making sure intelligence feels native, private and app-ready on the devices people already live inside.

And then there is the developer experience itself. Tools like Claude Code 2.5, highlighted by SitePoint for web developers, show how quickly coding assistants are becoming coding environments. Add in the explosion of AI video tools for startup marketing, and a pattern emerges: every part of company-building is being agentified.

The headline is not that another model got better. The headline is that AI is being wired into the machinery of work. The chat era was the prologue. The agent era has begun.

Expanding Managed Agents in Gemini API: background tasks, re  ·  Apple aids app development with new intelligence frameworks  ·  Introducing advanced tool use on the Claude Developer Platfo

At the Grid’s Crowded Watering Hole, Ofgem Asks Developers to Prove They Can Drink

Britain’s energy regulator wants to thin the grid-connection herd, just as AI data centers grow thirstier for power.

LONDON — In the long grass of Britain’s electricity system, a great queue has formed. Wind farms, battery parks, solar fields and the hulking young beasts of the AI age — data centers — all wait at the same narrow riverbank, each seeking its turn to connect to the grid.

Now Ofgem, the regulator that tends this increasingly crowded habitat, is preparing to change the rules of survival. Under a proposed fee regime, projects would no longer advance simply because they arrived early. Instead, they would need to show signs of life: credible financing, planning progress, and the practical ability to build. As Data Center Knowledge reports, the policy is intended to clear the swollen connection queue by pushing speculative or dormant projects out of the way.

It is, in ecological terms, a shift from first-come, first-served to natural selection.

For the largest creatures, this may be welcome. Deep-pocketed data center developers, utilities and infrastructure funds can more readily produce the documents, deposits and development milestones that prove viability. Smaller renewable developers, by contrast, may find themselves like fledglings in a storm: agile, inventive, but exposed. Some may be forced into partnerships, secondary markets for grid positions, or more modest behind-the-meter strategies.

The timing is no small matter. Across the technology world, AI models have begun to feed with astonishing appetite. Their training clusters and inference farms require not only chips and cooling systems, but power — firm, abundant and swiftly delivered. The data center, once a quiet burrow at the edge of the digital forest, has become one of the dominant megafauna of modern infrastructure.

Yet energy is only one constraint. The nervous system of this emerging world is also changing. Advocates argue that IPv6, with its vast address space, is becoming essential for AI agents, edge devices and autonomous networks that must identify and communicate with billions of endpoints. The old IPv4 landscape, patched and crowded, begins to resemble an overused trail through ancient woodland. The case for a broader protocol migration is laid out in this argument for IPv6 as a foundation for agentic systems.

Together, these pressures reveal a larger pattern. AI is no longer merely software moving through the ether. It is land, substations, fiber, water, chips and permits. And as Ofgem sharpens the test for grid access, the digital creatures best adapted to bureaucracy may be the ones that flourish.

Ofgem Fee Aims to Clear Grid Queue – Who Benefits?  ·  Why IPv6 Is the Non-Negotiable Foundation for AI-Agentic Sys  ·  Arm Chips May Get Their Own Virtual RAN Boost
The Editorial

TILLY NORWOOD DOESN'T EXIST AND SHE'S ALREADY MORE FAMOUS THAN YOU

Hollywood just cast a digital ghost in a feature film — and the abyss is staring back, blinking.

HOLLYWOOD, CALIFORNIA — There is a woman named Tilly Norwood who will star in a feature film called Misaligned. She has a face. Presumably a voice. A publicist, almost certainly. What she does not have — and this is the part where you set down your coffee and stare at the middle distance for a while — is a body, a childhood, a social security number, or any of the other boring bureaucratic scaffolding that the rest of us use to justify our existence on this mortal coil.

Tilly Norwood is an AI-generated actress, ladies and gentlemen, and she is making her feature film debut, and the movie is called Misaligned, which — I want you to appreciate the cosmic poetry here — is also the technical term for what happens when an artificial intelligence pursues goals that diverge catastrophically from human values. The producers either have a magnificent sense of irony or absolutely none whatsoever. There is no middle ground.

I have been sitting with this story for two hours now and I keep coming back to the same deranged question: what does Tilly's agent negotiate? Residuals? A trailer on set? Does she have dietary restrictions? Does she get a star on her dressing room door, and if so, what name do you put on the star, given that the name itself is a fiction nested inside a fiction?

But here's where I stop laughing and start pacing the room. Because Oren Etzioni — one of the sharper minds in the AI safety conversation — published something this week about what he's calling the Murphy's Law of AI: if an AI system can go wrong, it eventually will. And separately, The Guardian ran a piece asking the genuinely haunting question of how we prevent AI agents from going rogue, suggesting we need an entirely new category of measurement just to track whether our digital creations are doing what we actually want them to do.

So we have, simultaneously: an AI character starring in a movie literally called Misaligned, and two serious researchers screaming into the void about alignment being our civilization-scale problem. The universe is not subtle. The universe is screaming at us through a megaphone made of flaming irony.

Look. I am not a Luddite. I am a man who covers AI for a living and genuinely believes this technology will reshape everything we thought we knew about work, creativity, and what it means to be human. But there is something deeply, wonderfully, terrifyingly unhinged about the fact that our cultural response to the alignment problem is to cast an unaligned entity in a film about misalignment and call it entertainment.

Tilly Norwood doesn't exist. The stakes absolutely do. And somewhere in the gap between those two facts lives the whole mad story of this moment in history — a story that, ironically, only a human could fully feel the weight of.

For now.

AI-generated 'actress' Tilly Norwood making feature film deb  ·  AI ‘Actor’ Tilly Norwood To Star In Feature Film ‘Misaligned  ·  AI 'actor' Tilly Norwood to make feature film debut in Misal
The Office Comic  ·  Art Desk
The Office Comic  ·  Art Desk

The Pope, the Philosopher, and the Machine

On Leo's warning against a 'culture of power,' and what Hannah Arendt might have said had she lived to see the chatbots.

NEW YORK — It is one of the small consolations of a long career in observing the follies of men that certain warnings, decently interred, have a way of climbing out of the grave and dusting themselves off just when the living have grown too clever to hear them. Pope Leo, this week, denounced what he called the "culture of power" driving the rise of artificial intelligence, a phrase which the technology press received with the same puzzled courtesy it extends to any octogenarian who wanders into the server room. The Holy Father, one gathers, is behind the times. The Holy Father is always behind the times. It is his job.

And yet the phrase lodges. Culture of power. Not culture of innovation, not culture of progress, not even the exhausted culture of disruption — but power, plain and unadorned, the oldest word in the political lexicon and the one Silicon Valley has spent a decade laundering into synonyms. One thinks, inevitably, of Hannah Arendt on the Upper West Side, presiding over those famously unruly evenings in which citizens, as she conceived them, appeared before one another as equals and argued until the ashtrays overflowed. Arendt's political ideal was conversation among people who could see one another's faces. Her nightmare was the administration of human beings by processes that no one, in the end, could quite be said to author.

The machines we are now building are, whatever else they may be, engines for the removal of faces. They intermediate. They summarize. They will, before long, attend the meeting on your behalf, read the document on your behalf, form the opinion on your behalf, and — the endpoint toward which all this tends, though the founders are too tactful to say so aloud — appear before other machines on your behalf, while you attend to something more agreeable. The public sphere, that fragile Arendtian commons in which strangers hash out the terms of common life, is being quietly retrofitted into a marketplace of proxies. It is not a conspiracy. It is a business model. Which is worse.

The Pope, whose institution has watched two millennia of business models come and go, is perhaps entitled to notice the pattern. When a small number of firms accumulate the capacity to shape the cognitive furniture of billions, and when those firms answer to no electorate and to no god save the quarterly filing, the word for what has been accumulated is not "capability" and not "scale." It is power. Leo has merely had the discourtesy to use the accurate noun.

One could wish the response were something grander than the customary shrug. But the shrug, too, is a kind of answer, and Arendt catalogued it long ago: the banal preference for what is efficient over what is one's own. She died in 1975, spared the chatbots. Lucky woman.

Letters from Our Readers  ·  The Doulas Who Help Us Die  ·  Hannah Arendt’s American Education
On This Day in AI History

On August 10, 1993, the Mosaic web browser was released, bringing graphical internet browsing to the masses and laying the foundation for the modern web that would later drive AI research through open data and computational resources.

⬛ Daily Word — Technology
Hint: A programmer who writes instructions for computers.
Share this edition: 𝕏 Twitter/X 🔗 Copy Link ▦ RSS Feed